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

发布于 2024-10-09 17:10:12 字数 142 浏览 1 评论 0原文

如何从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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浊酒尽余欢 2024-10-16 17:10:12

也许从 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$ 伴随对象,您可以导入它。

Perhaps this has changed as of Scala 2.8.1, but the proposed domain$Foo$.MODULE$ doesn't work. You have to use domain.package$Foo$.MODULE$.

And it's a little different for objects, methods, etc. Given the scala class:

package object domain {
  object foo
  def bar = 42
  val baz = 1.0
}

You can access foo, bar and baz in Java like:

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

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 the package$ companion object, which you can import.

山川志 2024-10-16 17:10:12

如果您查看 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 using scala.math.Ordering$Boolean$.MODULE$. I see no reason why package objects shouldn't behave like normal objects in this regard, so your Foo instance should be domain$Foo$.MODULE$

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文