我有一个带有通用类作为参数的方法:

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/

    10-13 01:29