Допустим, мне нужно предоставить методу объект java.lang.Class
, представляющий подкласс некоторого родительского класса A
. Мне нужно сделать это из другого метода, который имеет общий параметр с верхним типом, привязанным к A
.
Я подумал, что это может сработать:
class A
def f(clazz: java.lang.Class[_ <: A]) = ()
def g[T <: A : Manifest] = f(classManifest[T].erasure)
Но это не так:
<console>:9: error: type mismatch;
found : java.lang.Class[_$1(in method g)] where type _$1(in method g)
required: java.lang.Class[_ <: A]
def g[T <: A : Manifest] = f(classManifest[T].erasure)
^
Почему компилятор не может понять, что T
действительно является подклассом A
? Я могу как-то помочь? Или я должен подойти к этому совершенно по-другому?