【问题标题】:How to access an object Foo contained in a scala package object from Java?如何从 Java 访问包含在 scala 包对象中的对象 Foo?
【发布时间】:2011-03-09 19:33:56
【问题描述】:

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

package object domain { object Foo }  domain$.MODULE$.Foo$.MODULE$ 

【问题讨论】:

    标签: java scala


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-28
        • 2020-08-12
        • 1970-01-01
        • 2023-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多