Germán
Germán

Reputation: 4565

Scala: keyword as package name

I'm trying to use a Java library (no source code available) which defines some xxx.xxx.object package. Scala complains about the presence of "object" in the package name, so I can't import from it, and I can't refer to its classes with fully qualified name either.

Is there a way around it?

Upvotes: 18

Views: 2829

Answers (2)

VonC
VonC

Reputation: 1323963

To complete agilefall's answer, the Scala Language Specification mentions that an import is composed of id:

id ::= plainid
| ‘\`’ stringLit ‘\`’

an identifier may also be formed by an arbitrary string between back-quotes (host systems may impose some restrictions on which strings are legal for identifiers). The identifier then is composed of all characters excluding the backquotes themselves.

Backquote-enclosed strings are a solution when one needs to access Java identifiers that are reserved words in Scala.
For instance, the statement Thread.yield() is illegal, since yield is a reserved word in Scala. However, here’s a work-around:

Thread.`yield`()

Upvotes: 24

agilefall
agilefall

Reputation: 3906

Wrapping the object in a ` (the quote next to 1) should work.

xxx.xxx.`object` 

Upvotes: 29

Related Questions