我有一个以泛型类作为参数的方法:
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/