【发布时间】:2010-11-15 23:47:00
【问题描述】:
我正在尝试使用定义一些 xxx.xxx.object 包的 Java 库(没有可用的源代码)。 Scala 抱怨包名称中存在“对象”,因此我无法从中导入,也无法使用完全限定名称引用它的类。
有办法解决吗?
【问题讨论】:
标签: scala
我正在尝试使用定义一些 xxx.xxx.object 包的 Java 库(没有可用的源代码)。 Scala 抱怨包名称中存在“对象”,因此我无法从中导入,也无法使用完全限定名称引用它的类。
有办法解决吗?
【问题讨论】:
标签: scala
将对象包装在 `(1 旁边的引号)中应该可以工作。
xxx.xxx.`object`
【讨论】:
要完成agilefall 的answer,Scala Language Specification 提到导入由id 组成:
id ::= plainid
| ‘\`’ stringLit ‘\`’
标识符也可以由反引号之间的任意字符串组成(主机系统可能会对标识符合法的字符串施加一些限制)。然后标识符由除反引号本身之外的所有字符组成。
当需要访问 Java 标识符时,反引号括起来的字符串是一种解决方案,Java 标识符是 Scala 中的保留字。
例如,声明Thread.yield()是非法的,因为yield是 Scala 中的保留字。但是,这里有一个解决方法:
Thread.`yield`()
【讨论】: