gpt4 book ai didi

Java 泛型 : Type mismatch: cannot convert from Integer to K

转载 作者:搜寻专家 更新时间:2023-10-30 23:01:36 25 4
gpt4 key购买 nike

以下代码抛出编译时异常

Type mismatch: cannot convert from Integer to K

我的理解是 K 应该处理扩展 Number 的任何值。

public <K extends Number> K getValue(){
Integer a = new Integer(1);
return a;//Type mismatch: cannot convert from Integer to 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);
}

关于Java 泛型 : Type mismatch: cannot convert from Integer to K,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50479680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com