如何Foo从Java 访问scala包对象中包含的对象?
package object domain { object Foo } domain$.MODULE$.Foo$.MODULE$
Run Code Online (Sandbox Code Playgroud)
也许从 Scala 2.8.1 开始这已经改变了,但是提议的domain$Foo$.MODULE$不起作用。你必须使用domain.package$Foo$.MODULE$.
对于对象、方法等来说有点不同。给定 scala 类:
package object domain {
object foo
def bar = 42
val baz = 1.0
}
Run Code Online (Sandbox Code Playgroud)
您可以在 Java 中访问foo,bar和 ,如下所示:baz
domain.package$foo$.MODULE$
domain.package$.MODULE$.bar()
domain.package$.MODULE$.baz()
Run Code Online (Sandbox Code Playgroud)
当我试图弄清楚这一点时,我认为我们遇到了麻烦,因为 Scala 生成了一个名为 的类package,当然您不能在 Java 中导入该类。幸运的是,我们只需要package$伴生对象,您可以导入它。