我有一个带有通用类作为参数的方法:
myMethod(Class myclass){
Superclass superclass = myclass;
}
然后我通过传递父类(super class)的子类来使用该方法
myMethod(Mychildclass.class)
Netbeans向我警告我正在使用通用的“类”。但是,这很好。
如果我将方法的参数更改为更具体的
myMethod(Class<Superclass> myclass){
this.superclass = myclass;
}
然后尝试使用我的方法时出现错误:
incompatibles types: Class<Mychildclass> cannot be converted to Class<Superclass>
所以我的问题是:为什么这不起作用?如何使Netbeans高兴,不给我任何警告,也没有错误消息?
最佳答案
尝试以下方法:
private Class<? extends Superclass> superclass;
void myMethod(Class<? extends Superclass> myclass){
this.superclass = myclass;
}
Class<Superclass>
,仅应使用
Superclass.class
。 Class<? extends Superclass>
,Superclass.class
或其任何子类均应使用。 关于Java:方法参数中的继承类不能转换为父类(super class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21852257/