我对我的原始代码做了一些简化,只是为了专注于这个问题。
我有这组课程:
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 的对象相关联,那么这个问题可能会得到解决。有什么办法可以解决这个问题?