我有我的方法:
myMethod(Class class){}
我想将所有降序类传递给此方法MyClass,因此将其更改为:
myMethod(Class<MyClass> class){}
并致电:
myMethod(MyOtherClassExtendingMyClass.class)
然后我有编译错误:
The method myMethod(Class<MyClass>) in the type XXX is not applicable
for the arguments (Class<MyOtherClassExtendingMyClass>)
如何确保只允许具有所有降序类的MyClass作为此方法的参数?
答案 0 :(得分:8)
使用上限通配符:
myMethod(Class<? extends MyClass>) {}
您可能也希望捕获通配符:
<T extends MyClass> void myMethod(Class<T> klass) {}
这次你可以参考身体里的T
。
答案 1 :(得分:1)
根据您的问题,我认为您需要以下方法声明myMethod
:
myMethod(Class<? extends MyClass> clazz)