错误在于“返回此”;与此匹配:类型不匹配:无法从A转换为T。

public class A<T extends A<T>>{
    public T method() {
        return this;
    }
}


我不明白为什么当A是T的合适候选者时,编译器为什么不能从A转换为T。

最佳答案

让我们假设您的代码有效...

您可能有一个这样定义的子类

public class B extends A<B> {

}


在这里,类型参数Tthis的类型相同。
这就是为什么我猜你说


  A是T的合适人选




现在考虑这种情况

public class C extends A<B> {

}


这完全有效,因为B通过了T所需的所有条件。

在这种情况下,您在类A中的方法声明将变得无效。
(返回类型为B,但是您正在返回类C的实例。)



所以你的假设是


  A是T的合适人选


是无效的。因此,错误。

希望这可以帮助。
祝好运。

10-04 12:39
查看更多