4

我想创建一个基于另一个 java 集合的 java 列表,例如。设置在 Scala 中。

为什么这是不可能的?我得到一个 required: scala.this.Int 错误。

val in: java.util.Set[String] = new java.util.HashSet()
val out : java.util.List[String] = new java.util.ArrayList(in)

然而,这有效,但感觉不对:

val in: java.util.Set[String] = new java.util.HashSet()
val out: List[String] = new java.util.ArrayList()

out.addAll(in.asInstanceOf[java.util.Set[String]])

谢谢!

4

2 回答 2

2

您需要显式传递 ArrayList 类型变量。

这工作正常:

val in = new java.util.HashSet[String]
val out = new java.util.ArrayList[String](in)
于 2009-07-02T12:53:58.357 回答
2

这有效:

val in: java.util.Set[String] = new java.util.HashSet()
val out : java.util.List[String] = new java.util.ArrayList[String](in)

我认为这个问题在某种程度上与类型擦除有关,因为 ArrayList 没有像 Scala 数组那样参数化,而是它是一种存在类型。这可能使类型推断变得不可能。

于 2009-07-02T12:55:15.187 回答