【发布时间】:2011-03-09 19:33:56
【问题描述】:
如何从 Java 访问包含在 scala 包对象中的对象 Foo?
package object domain { object Foo } domain$.MODULE$.Foo$.MODULE$
【问题讨论】:
如何从 Java 访问包含在 scala 包对象中的对象 Foo?
package object domain { object Foo } domain$.MODULE$.Foo$.MODULE$
【问题讨论】:
也许从 Scala 2.8.1 开始这已经改变了,但是建议的 domain$Foo$.MODULE$ 不起作用。你必须使用domain.package$Foo$.MODULE$。
对于对象、方法等来说有点不同。给定 scala 类:
package object domain {
object foo
def bar = 42
val baz = 1.0
}
您可以在 Java 中访问 foo、bar 和 baz,例如:
domain.package$foo$.MODULE$
domain.package$.MODULE$.bar()
domain.package$.MODULE$.baz()
当我试图弄清楚这一点时,我认为我们遇到了麻烦,因为 Scala 生成了一个名为 package 的类,当然你不能在 Java 中导入它。幸运的是,我们只需要 package$ 伴随对象,您可以导入它。
【讨论】:
如果您查看 Scala 库中的对象中的对象,例如scala.math.Ordering.Boolean,您可以使用 scala.math.Ordering$Boolean$.MODULE$ 从 Java 中获取它。我看不出为什么包对象在这方面不应该像普通对象那样表现,所以你的 Foo 实例应该是 domain$Foo$.MODULE$
【讨论】: