我有这个课程heirarchy。
class Base {}
class Derived extends Base {}
和方法
void foo(Class<? extends Base> cls) {}
和变量
Class<? extends Derived> derivedCls;
是否可以致电foo(derivedCls)
?
如上所述,它失败了,抱怨争论不相容。 foo
只会检查某个对象是cls
的实例,因此调用没有逻辑问题。 (这不像将Set<String>
作为Set<Object>
传递,然后尝试添加Integer
。)
Class::asSubClass
会让我从Class<Base>
转到'Class`,但我没有看到另一种方法。