从Scala中的java.util.Set构建java.util.List
我想基于另一个java集合(如Scala中的集合)创建一个java列表 为什么这是不可能的?我得到一个必需的:scala.this.Int错误从Scala中的java.util.Set构建java.util.List,java,list,scala,set,scala-collections,Java,List,Scala,Set,Scala Collections,我想基于另一个java集合(如Scala中的集合)创建一个java列表 为什么这是不可能的?我得到一个必需的: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.u
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]])
谢谢 您需要显式地传递ArrayList类型变量 这很好:
val in = new java.util.HashSet[String]
val out = new java.util.ArrayList[String](in)
这项工作:
val in: java.util.Set[String] = new java.util.HashSet()
val out : java.util.List[String] = new java.util.ArrayList[String](in)
我假设这个问题与类型擦除有关,因为ArrayList没有像Scala数组那样参数化,而是一个存在类型。这可能使类型推断变得不可能。谢谢您的回答!我注意到,如果集合的类型是未指定的(没有使用泛型),这也会起作用:val out:List[String]=new ArrayList[String](int.asInstanceOf[Set[String]])谢谢你的提问-通过尝试回答这个问题,我学到了很多有关Scala的知识。顺便说一句,如果有人回答你,礼貌的做法是投赞成票或接受他们的回答。(我没有回答,但我很感谢那些回答的人)提交给trac谢谢尼克的指针!我第一次来这里:-)