在 Scala 中从 java.util.Set 构造 java.util.List
我想创建一个基于另一个java集合的java列表,例如。 以斯卡拉为背景。
为什么这是不可能的? 我收到 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]])
谢谢!
I would like to create a java List based on another java Collection eg. Set in Scala.
Why is this not possible? I get a required: scala.this.Int error.
val in: java.util.Set[String] = new java.util.HashSet()
val out : java.util.List[String] = new java.util.ArrayList(in)
This worked however, but doesn't feel right:
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]])
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要显式传递 ArrayList 类型变量。
这工作正常:
You'll need to explicitly pass the ArrayList type variable.
This works fine:
这是可行的:
我认为问题在某种程度上与类型擦除有关,因为 ArrayList 没有像 Scala 数组那样参数化,而是一种存在类型。 这可能使类型推断变得不可能。
This works:
I assume the problem is somehow related to type erasure, as ArrayList is not parametrized as a Scala array would be, but, rather, it's an existential type. This is probably making the type inference impossible.