我将此方法与泛型类作为参数:
myMethod(Class myclass){
Superclass superclass = myclass;
}
然后我通过传递超类的子类
来使用该方法myMethod(Mychildclass.class)
Netbeans正在警告我使用通用的“Class”。但是这很好用。 如果我将方法的参数更改为更具体的
myMethod(Class<Superclass> myclass){
this.superclass = myclass;
}
然后我在尝试使用我的方法时遇到错误:
incompatibles types: Class<Mychildclass> cannot be converted to Class<Superclass>
所以我的问题:为什么这不起作用?如何让Netbeans高兴不给我任何警告和错误消息?
答案 0 :(得分:5)
请改为尝试:
private Class<? extends Superclass> superclass;
void myMethod(Class<? extends Superclass> myclass){
this.superclass = myclass;
}
如果您使用Class<Superclass>
,
预计只有Superclass.class
。
如果您使用Class<? extends Superclass>
,
Superclass.class
或其任何子类都是预期的。