我可以在 Java 中使用 scala 列表吗,例如:
import scala.collection.immutable.List;
class HelloScalaList {
public static void main (String[] args) {
List xs = List(1, 2, 3);
System.out.println(xs);
}
}
它似乎没有编译。找不到 List$.apply 方法。
当我把它改成
List xs = Dir.ls()
其中 Dir 是我的 scala 类,而 ls() 返回一个 scala 列表,编译器提示
"Internal compiler error: java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding cannot be cast to org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.initializeTypeVariable(BinaryTypeBinding.java:927)"
我不知道这是什么意思。
我想用 scala 编写一些库,但也希望它能在 Java 中使用。
在我的 scala 类中有返回 scala List 的方法,为了让 java 代码使用它们,我有两个选择:
直接在java中使用scala List
为这些方法编写一个返回 java.util.List 的包装类。
我宁愿选择选项 1,否则我将不得不为几乎所有的 Scala 类编写一个包装器类。
但我无法让 scala List 在 Java 中运行。
最佳答案
从 Scala 2.10 开始,我没有成功使用上述技巧。
但是你可以使用下面的代码:
public static <T> scala.collection.immutable.List<T> scalaList(List<T> javaList) {
return scala.collection.JavaConversions.asScalaIterable(javaList).toList();
}
关于java - 我可以直接在Java中使用scala List吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4524868/