java scala互操作性

java scala互操作性,java,scala,Java,Scala,假设您有一个scala库,java程序需要使用它,但不仅仅是在将来 当涉及到收集和每一个好东西,你可能在scala。您更愿意在类中创建一些特定于java的方法,或者在某种程度上符合单一责任原则,您将创建一组静态对象,为使用显式转换(asjava)在scala版本中转换对象的方法提供这些方法 如果有一种从java内部转换asJava的方法,那将更容易,但我不知道是否可以从java内部使用显式转换包。我怀疑,因为我觉得它使用类型类来增强功能 java有什么可以帮上忙的吗 这里的最佳实践是什么 非常感

假设您有一个scala库,java程序需要使用它,但不仅仅是在将来

当涉及到收集和每一个好东西,你可能在scala。您更愿意在类中创建一些特定于java的方法,或者在某种程度上符合单一责任原则,您将创建一组静态对象,为使用显式转换(asjava)在scala版本中转换对象的方法提供这些方法

如果有一种从java内部转换asJava的方法,那将更容易,但我不知道是否可以从java内部使用显式转换包。我怀疑,因为我觉得它使用类型类来增强功能

java有什么可以帮上忙的吗

这里的最佳实践是什么


非常感谢。

从Java调用Scala代码通常比从Java调用Scala代码要复杂得多。如果要引用Scala标准库,实际上也可以使用Java中的
asJava
。至于类型类,它们实际上只是编译器自动替换的隐式类。显然,在Java中没有隐式,因此您需要自己传递正确的实例(这有点麻烦,但可行)。这里有一个这样的例子(它将Java映射转换为Scala映射,但其工作方式应该与之类似):


就我个人而言,我想说的是,你应该在你想向Java公开的比特上引入瘦包装器,它不使用任何花哨的Scala特性,比如隐式、函数对象(你实际上可以用Java 8构造替换它们)等等。

上有一篇关于这方面的文章。