“返回此;”时出错与此一致:类型不匹配:无法从 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 is a suitable candidate for T
现在考虑这个案例
public class C extends A<B> {
}
这是完全有效的,因为 B
通过了 T
所需的所有标准。
在这种情况下,A
类中的方法声明将变得无效。
(返回类型为 B
,但您返回的是 C
类的实例。)
所以你的假设
A is a suitable candidate for T
无效。因此出现错误。
希望这有帮助。
祝你好运。
关于Java 类型不匹配,无法转换为将自身作为泛型类型返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24769061/