gpt4 book ai didi

java - 我可以直接在Java中使用scala List吗?

转载 作者:太空狗 更新时间:2023-10-29 23:01:06 28 4
gpt4 key购买 nike

我可以在 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 代码使用它们,我有两个选择:

  1. 直接在java中使用scala List

  2. 为这些方法编写一个返回 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com