私のコードの簡略版として:
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 が _$1 <: GenX 型ではなく GenX 型であるとコンパイラが不平を言うことです。
理解できません。