错误在于“返回此”;与此匹配:类型不匹配:无法从A转换为T。
public class A<T extends A<T>>{
public T method() {
return this;
}
}
我不明白为什么当A是T的合适候选者时,编译器为什么不能从A转换为T。
最佳答案
让我们假设您的代码有效...
您可能有一个这样定义的子类
public class B extends A<B> {
}
在这里,类型参数
T
与this
的类型相同。这就是为什么我猜你说
A是T的合适人选
现在考虑这种情况
public class C extends A<B> {
}
这完全有效,因为
B
通过了T
所需的所有条件。在这种情况下,您在类
A
中的方法声明将变得无效。(返回类型为
B
,但是您正在返回类C
的实例。)所以你的假设是
A是T的合适人选
是无效的。因此,错误。
希望这可以帮助。
祝好运。