我正在尝试使用Java库(没有可用的源代码)来定义一些 xxx.xxx.object 包。 Scala抱怨软件包名称中存在“object”,因此我无法从中导入,也无法使用完全限定的名称引用其类。
有办法吗?
答案 0 :(得分:29)
将对象包装在`((1旁边的引号)中应该有效。
xxx.xxx.`object`
答案 1 :(得分:24)
要完成agilefall的answer,Scala Language Specification会提到导入由id
组成:
id ::= plainid
| ‘\`’ stringLit ‘\`’
标识符也可以由后引号之间的任意字符串形成(主机系统可能对哪些字符串对于标识符合法施加一些限制)。然后,标识符由除反引号本身之外的所有字符组成。
当需要访问Scala中保留字的Java标识符时,反引号括起的字符串是一种解决方案 例如,语句
Thread.yield()
是非法的,因为yield
是Scala中的保留字。但是,这是一个解决方法:
Thread.`yield`()