【问题标题】:Construct a java.util.List from a java.util.Set in Scala从 Scala 中的 java.util.Set 构造一个 java.util.List
【发布时间】:2010-11-07 15:03:26
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 感谢您的回答!我注意到,如果未指定 Set 的类型(未使用泛型),这也可以: val out: List[String] = new ArrayList[String](int.asInstanceOf[Set[String]])
  • 感谢您的提问 - 通过尝试回答,我学到了很多关于 Scala 的知识。顺便说一句,如果有人回答你,那么赞成或接受他们的回答是有礼貌的。 (我没有回答,但我很感激那些回答的人)
  • 感谢尼克的指点!我第一次来这里:-)

标签: java list scala set scala-collections


【解决方案1】:

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

这很好用:

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

【讨论】:

    【解决方案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 数组那样参数化,而是一种存在类型。这可能使类型推断变得不可能。

    【讨论】:

      猜你喜欢
      • 2014-10-14
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 2013-03-03
      • 2019-05-29
      • 2011-01-15
      相关资源
      最近更新 更多