Java:继承类不能在方法参数中转换为超类

时间:2014-02-18 11:24:07

标签: java inheritance parameters casting parameter-passing

我将此方法与泛型类作为参数:

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高兴不给我任何警告和错误消息?

1 个答案:

答案 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或其任何子类都是预期的。