【问题标题】:How can I construct a scala.collection.immutable.List object in java [duplicate]如何在java中构造一个scala.collection.immutable.List对象[重复]
【发布时间】:2018-01-29 11:10:39
【问题描述】:

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

【问题讨论】:

  • 你能贴出你试过的示例代码吗?

标签: java scala


【解决方案1】:

scala.collection.immutable.List 类对于使用 Java 工作不是很友好。您仍然可以从 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();

【讨论】:

  • 你太棒了!!
【解决方案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

【讨论】:

猜你喜欢
  • 2020-03-01
  • 2023-03-12
  • 1970-01-01
  • 2015-01-05
  • 2011-04-30
  • 2012-12-05
  • 1970-01-01
  • 2013-09-26
  • 2011-01-23
相关资源
最近更新 更多