我可以在 Java 中使用 scala List,例如:
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 列表,编译器抱怨
“内部编译器错误:java.lang.ClassCastException:org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding 无法在 org.eclipse.jdt.internal 中转换为 org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding。 compiler.lookup.BinaryTypeBinding.initializeTypeVariable(BinaryTypeBinding.java:927)"
我不知道这意味着什么。
我想在 scala 中编写一些库,但也希望它可以在 Java 中使用。
在我的 scala 类中有返回 scala 列表的方法,对于使用它们的 java 代码,我有两个选择:
直接在java中使用scala List
编写一个为这些方法返回 java.util.List 的包装类。
我更喜欢选项 1,否则我将不得不为几乎所有的 scala 类编写一个包装类。
但我就是无法让 scala List 在 Java 中运行。