【发布时间】:2017-10-06 08:51:23
【问题描述】:
我有两组,其中一组列出了派生类的实例。创建的集合类型不在我的控制范围内,我无法确保两者都是Set[A]。 set23 用于我需要其类型为Set[B] 的其他上下文中。我想相交:
case class A(name: String)
class B(name: String) extends A(name)
val set12 = Set(new A("1"), new A("2"))
val set23 = Set(new B("2"), new B("3"))
set12 intersect set23 // does not work
错误是:
类型不匹配; 找到:scala.collection.immutable.Set[B]
必需:scala.collection.GenSet[A]
注意:B <: a trait genset>
我知道Set 不是协变的,是否有一些干净的解决方法而不重建集合?以下作品,但我不想使用asInstanceOf:
set12 intersect set23.asInstanceOf[Set[A]]
【问题讨论】:
标签: scala collections set covariance