Covariant typing in method param
I have the following classes:
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] {}
And now I'm trying to accept any MyTable subclass in a method parameter
def testMethod[T <: MyTable[Record]](t: T) {
t.method
}
val test = method(MyTable1)
This produces the error that MyTable1 does not conform to T. If I change
the method to '[T >: MyTable[Record]]' then this satisfies the type
checker at the calling point, but then of course I can't access t.method
anymore. How would I fix this problem?
No comments:
Post a Comment