繁体   English   中英

如何从Java访问Scala包对象中包含的对象Foo?

[英]How to access an object Foo contained in a scala package object from Java?

如何从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中访问foobarbaz ,如:

domain.package$foo$.MODULE$
domain.package$.MODULE$.bar()
domain.package$.MODULE$.baz()

虽然我试图解决这个问题,但我认为我们遇到了麻烦,因为Scala生成了一个名为package的类,当然你不能用Java导入它。 幸运的是,我们只需要可以导入的package$ companion对象。

如果您查看Scala库中对象中的对象,例如scala.math.Ordering.Boolean ,您可以使用scala.math.Ordering$Boolean$.MODULE$从Java获取它。 我认为没有理由为什么包对象在这方面不应该像普通对象一样,所以你的Foo实例应该是domain$Foo$.MODULE$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM