【发布时间】:2011-05-30 07:40:35
【问题描述】:
我可以在 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.compiler.lookup.ReferenceBinding at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.initializeTypeVariable(BinaryTypeBinding.java:927)"
我不知道这是什么意思。
我想在 scala 中编写一些库,但也希望在 Java 中使用它。
在我的 scala 类中有返回 scala 列表的方法,对于使用它们的 java 代码,我有两个选择:
直接在java中使用scala List
编写一个包装类,为这些方法返回 java.util.List。
我更喜欢选项 1,否则我将不得不为我几乎所有的 scala 类编写一个包装类。
但我无法让 scala List 在 Java 中运行。
【问题讨论】:
标签: java scala-collections scala-java-interop