如何从 Java 访问 scala 包对象中包含的对象 Foo?
如何从Java访问包含在scala包对象中的对象Foo
?
package object domain { object Foo } domain$.MODULE$.Foo$.MODULE$
How to access an object Foo
contained in a scala package object from Java?
package object domain { object Foo } domain$.MODULE$.Foo$.MODULE$
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许从 Scala 2.8.1 开始,这种情况已经发生了变化,但建议的
domain$Foo$.MODULE$
不起作用。您必须使用domain.package$Foo$.MODULE$
。对于对象、方法等来说有点不同。给定 scala 类:
您可以在 Java 中访问
foo
、bar
和baz
,如下所示:当我试图弄清楚这一点时,我认为我们遇到了麻烦,因为 Scala 生成了一个名为
package
的类,当然您无法在 Java 中导入该类。幸运的是,我们只需要package$
伴随对象,您可以导入它。Perhaps this has changed as of Scala 2.8.1, but the proposed
domain$Foo$.MODULE$
doesn't work. You have to usedomain.package$Foo$.MODULE$
.And it's a little different for objects, methods, etc. Given the scala class:
You can access
foo
,bar
andbaz
in Java like:While I was trying to figure this out, I thought we were in trouble because Scala generates a class named
package
, which of course you can't import in Java. Fortunately, we only need thepackage$
companion object, which you can import.如果您查看 Scala 库中对象中的对象,例如 scala.math.Ordering.Boolean,您可以使用 scala.math.Ordering$Boolean$.MODULE 从 Java 获取它$。我不认为包对象在这方面的行为不应该像普通对象一样,因此您的
Foo
实例应该是domain$Foo$.MODULE$
If you look at an object in an object in the Scala lib, e.g.
scala.math.Ordering.Boolean
, you can get it from Java usingscala.math.Ordering$Boolean$.MODULE$
. I see no reason why package objects shouldn't behave like normal objects in this regard, so yourFoo
instance should bedomain$Foo$.MODULE$