我想从 Java 方法返回对 Scala 对象的引用。我该怎么做?
我的 Scala 对象是这样的:
trait Environment
object LocalEnvironment extends Environment {...}
object ServerEnvironment extends Environment {...}
...我希望我的 Java 方法是这样的:
Environment getEnvironment() { return LocalEnvironment; } // DOES NOT COMPILE
有办法吗?
最佳答案
虽然 $.MODULE$ 方法有效,但获得与 Scala 对象的 Java 互操作的稍微不那么刺耳的方法是将对象公开为自身的方法。
斯卡拉:
object LocalEnvironment extends Environment{
def instance = this
}
Java:
Environment getEnvironment() { return LocalEnvironment.instance(); }
之所以可行,是因为在幕后,.instance() 是作为类 LocalEnvironment 上的静态方法实现的。已经有一些关于 Scala 对象默认获得“实例”方法的讨论,正是出于这个目的。
关于java - 如何在 Java 中传递 Scala 对象引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845737/