这里的问题是这样的事实:它
K是一个可扩展的类型,
Number但它是该类型的一个 未知
子类,
Number这就是为什么编译器会引发此错误,因为
Integer它只是该子类的一个特定子类,
Number因此它无法与任何潜在的目标类型匹配,因此会引发此错误。
假设您要显式转换它,使其与
public <K extends Number> K getValue(){ Integer a = new Integer(1); return (K) a;}
然后,如果调用它,期望
Number除以外的任何子类,
Integer则将获得
ClassCastException,这正是编译器要避免的事情:
Double d = getValue(); <-- throws ClassCastException
解决方法是,您可以使用以下
Number返回类型定义方法:
public Number getValue() { return new Integer(1);}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)