从Scala中的java.util.Set构造java.util.List

时间:2009-07-02 12:30:36

标签: java list scala set scala-collections

我想基于另一个java Collection创建一个java List。置于斯卡拉。

为什么这不可能?我得到了一个必需的: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]])

谢谢!

2 个答案:

答案 0 :(得分:2)

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

这很好用:

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

答案 1 :(得分: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数组那样被参数化,而是,它是一种存在类型。这可能使类型推断变得不可能。