Java 类型不匹配,无法转换为将自身作为泛型类型返回

标签 java class templates generics types

“返回此;”时出错与此一致:类型不匹配:无法从 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 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/

相关文章:

c++ - 减少重复的方法?

java - 使用扫描仪和嵌套for循环在java中创建空心矩形

java - playFramework 中 Scala View 模板的转换和实例

java - 表格不显示

c++ - 如何使用在构造函数中创建的对象

c++ - 我可以仅为特定模板实例化添加断点吗?

安卓:如何在安卓应用程序中应用.psd(Photoshop模板)

java - 将 UI 与事件处理程序分离

java - 我的 Java IDE 的域模型

java - 在spark java中使用isin函数时保留列表的顺序