java - 如何在 Java 中传递 Scala 对象引用?

标签 java scala interop

我想从 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/

相关文章:

java - 检查一个类是否间接继承了另一种类型的类

安装 Mac OS X Sierra (Mac OS 10.12) 后 Eclipse scala-ide 将无法启动

xml - Scala XML 平等问题

javascript - 如何在 javascript 中使用 clojurescript 的复杂返回对象

java - 在 Java 中并行化阻塞调用

java - [-1,+1]中两种随机数选择方法比较

java - Hibernate SqlFragment内存泄漏?

scala - 写一个带有增量编码列的 Parquet 文件

c# - 程序终止后 Excel 进程仍在运行

scala - 如何传递 Scala UserDefinedFunction 其中输出是复杂类型(使用 StructType 和 StructField)以从 Pyspark 使用