問題に焦点を当てるためだけに、元のコードを単純化しました。
私はこのクラスのセットを持っています:
abstract class A(n: String){
def name = n
}
abstract class B[T](n: String) extends A(n){
def printT(t: T) = println(t)
}
object B{
def unapply[T](b: B[T]) = Some(b.name)
}
case class C extends B[Int]("integer")
ここで、As のリストで B を拡張するものを発見し、printT を使用したいと考えています。このようなもの:
val list = List(C)
list match{
case b @ B(_) => b.printT(2)
}
私が得た行case b @ B(_) => b.printT(2)
で:
found : Int(2)
required: T where type T
case b @ B(_) => b.printT(2)
^
クラスの T を使用したいオブジェクトに T を関連付けることができれば、おそらくこの問題は解決されるでしょう。これを解決する方法はありますか?