1
我有以下類別:協變打字
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。我將如何解決這個問題?
謝謝,我已經試過了,但前面有一個「T是不變的」的錯誤,所以當我看到你的答案,我環顧四周爲解決方案,並改變了我的'def method(t:T)'方法到'def method [U>:T](u:U)',它修復了錯誤 –