Java:继承类不能在方法参数中转换为父类(super class)

标签 java inheritance parameters casting parameter-passing

我有一个以泛型类作为参数的方法:

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/

相关文章:

java - 使用restTemplate的Post方法,错误java.net.UnknownHostException

Javascript组合如何扩展一个对象

c - 将数组作为参数传递给 C 中的函数

java - Android:登录的后台进程

java - 使两个不同的方法相互同步或同步变量

c# - 在 C# 中遇到继承和泛型问题

C#:如何检查两个实例的类型

function - 如何使用 F# 获取作为参数进入函数的变量的名称?

java - 在映射器文件中访问mybatis sql中的公共(public)静态最终字符串

java - 如何从结果/右侧获取条件/左侧中定义的所有 drools 变量的列表?