作为我的代码的简化版本:
abstract class GenX
case class X1 extends GenX
case class X2 extends GenX
...
class A {
val ab : LinkedList[X1] = LinkedList()
val ac : LinkedList[X2] = LinkedList()
...
def addX[T <: GenX]( x : GenX, clazz : T) =
getList(clazz) append LinkedList(x) // HERE complains
def getList(T <: GenX) (clazz : T) : LinkedList[_<: GenX] = clazz match {
case X1 => ab
case X2 => ac
...
}
}
我的意图是,当需要将 GenX 添加到 A 时,它可以将其类作为参数传递给通用添加,例如
case class X1 extends GenX{
def addToA(a : A) = a.addX(this, this getClass)
}
现在的问题是编译器抱怨 x 是 GenX 类型而不是 _$1 <: GenX 类型
我不明白。