假设我需要提供一个方法,该方法带有一个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
?无论如何我可以帮助它吗?或者我应该以完全不同的方式处理这个问题?