如何在java中构造一个scala.collection.immutable.List对象

时间:2018-01-29 11:10:39

标签: java scala

我想从我的Java代码中构造一个scala.collection.immutable.List类型的对象。当我尝试使用new创建它时,我收到一条错误消息,指出scala.collection.immutable.List是抽象的。我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

使用List随播广告对象构建List

List(1, 2, 3)

使用::运算符构建列表。

val list = 1 :: 2 :: Nil

请参阅scala文档以获取更多信息

https://www.scala-lang.org/api/current/scala/collection/immutable/List.html

答案 1 :(得分:0)

使用Java工作scala.collection.immutable.List类不是很友好。你仍然可以从Java使用它。相当于Scala

val list = 3 :: 2 :: 1 :: Nil

会像

import scala.collection.immutable.List;
import scala.collection.immutable.Nil$;
import scala.collection.immutable.List$;
import scala.collection.immutable.$colon$colon;

scala.collection.immutable.List<Integer> list = new $colon$colon(3, new $colon$colon(2, new $colon$colon(1, Nil$.MODULE$)));

在许多情况下,另一种更简单的方法可能是首先构造Java集合,然后使用scala.collection.JavaConverters将其转换为Scala。例如:

import scala.collection.JavaConverters;

java.util.List<Integer> javaList = new java.util.ArrayList<Integer>();
javaList.add(3);
javaList.add(2);
javaList.add(1);
scala.collection.immutable.List<Integer> scalaList = JavaConverters.collectionAsScalaIterable(javaList).toList();