我想基于另一个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]])
谢谢!
答案 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数组那样被参数化,而是,它是一种存在类型。这可能使类型推断变得不可能。