我有以下课程:
abstract class Record {}
class Record1 extends Record {}
class Record2 extends Record {}
class MyTable[T <: Record : Manifest] extends externalLibrary.Table[T] {
def method {}
}
object MyTable1 extends MyTable[Record1] {}
object MyTable2 extends MyTable[Record2] {}
现在我正在尝试接受方法参数
中的任何MyTable子类def testMethod[T <: MyTable[Record]](t: T) {
t.method
}
val test = method(MyTable1)
这会产生MyTable1不符合T的错误。如果我将方法更改为[T >: MyTable[Record]]
,那么这将满足调用点的类型检查器,但当然我不能再访问t.method 。我该如何解决这个问题?
答案 0 :(得分:3)
您在声明网站上使用方差注释创建类协变:
class MyTable[+T <: Record : Manifest]