Java泛型:类型不匹配:无法从Integer转换为K

Java泛型:类型不匹配:无法从Integer转换为K,第1张

Java泛型:类型不匹配:无法从Integer转换为K

这里的问题是这样的事实:它

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);}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5600671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存