Ben*_*ler 5 java parameters inheritance casting parameter-passing
我有一个泛型类作为参数的此方法:
myMethod(Class myclass){
Superclass superclass = myclass;
}
Run Code Online (Sandbox Code Playgroud)
然后我通过传递超类的子类来使用该方法
myMethod(Mychildclass.class)
Run Code Online (Sandbox Code Playgroud)
Netbeans正在警告我使用通用的"Class".但是这很好用.如果我将方法的参数更改为更具体的参数
myMethod(Class<Superclass> myclass){
this.superclass = myclass;
}
Run Code Online (Sandbox Code Playgroud)
然后我在尝试使用我的方法时遇到错误:
incompatibles types: Class<Mychildclass> cannot be converted to Class<Superclass>
Run Code Online (Sandbox Code Playgroud)
所以我的问题:为什么这不起作用?如何让Netbeans高兴不给我任何警告和错误消息?
试试这个:
private Class<? extends Superclass> superclass;
void myMethod(Class<? extends Superclass> myclass){
this.superclass = myclass;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用Class<Superclass>,
只有Superclass.class预期.
如果您使用Class<? extends Superclass>,
Superclass.class或预期其任何子类.