假设您有一个scala lib,需要您的java程序使用,但不仅仅是将来。
当谈到收集和scala中你可能拥有的所有好东西时。您是否希望在类中创建一些特定于java的方法,或者在某种程度上符合单一责任原则,您将创建一组静态对象,这些对象提供了使用显式转换asjava在scala版本中转换对象的方法。
如果有一种方法可以从java中转换asJava,那将更容易,但我不知道是否可以在java中使用那个显式转换包。我怀疑,因为我觉得它使用类型类来增强功能。
java有什么可以提供帮助吗?
这里的最佳做法是什么?
非常感谢提前。
答案 0 :(得分:1)
从Java调用Scala代码通常比其他方法更棘手。如果要引用Scala标准库,实际上也可以使用Java中的asJava
。至于类型类,它们实际上只是编译器自动替代的含义。在Java中,显然没有任何暗示,所以你需要自己传递正确的实例(这有点麻烦,但可行)。这是一个例子(它将Java地图转换为Scala,但它应该以相反的方式工作):Convert java.util.HashMap to scala.collection.immutable.Map in java。
我个人会说你应该在你要暴露给Java的位上引入瘦包装器,它不会使用任何花哨的Scala功能,比如implicits,函数对象(你实际上可以替换那些带有Java 8结构的那些)等等。