gpt4 book ai didi

java - 泛型 - 方法返回类型作为扩展类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:12 26 4
gpt4 key购买 nike

我正在尝试在 Java 6 中实现这一点:

abstract class CurrClass{
public <T extends CurrClass> T setField (String str) {
return this;
}
}

编译器提示错误:类型不匹配:无法从 CurrClass 转换为 T。

添加类型转换,带有警告:"return (T) this;"

是否有更简洁的语法来执行此操作?为什么需要类型转换?

最佳答案

返回类型比被返回的对象更具限制性。这就是编译器生成错误(和后续警告)的原因。考虑这种情况:

class A extends CurrClass {}
class B extends CurrClass {}

...

A myObject = new B().setField("stringhere");

这在您的设置中是完全合法的,但会导致 ClassCastException

这就是为什么我们通常只返回比签名要求的限制更多的类型。

关于java - 泛型 - 方法返回类型作为扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806672/

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