gpt4 book ai didi

java - 为什么 Java 不允许您从泛型类型变量继承?

转载 作者:搜寻专家 更新时间:2023-11-01 02:19:41 25 4
gpt4 key购买 nike

public class MyClass<T> extends T {...}

以上声明将无法编译并出现错误:

error: unexpected type
class MyClass<T> extends T {}
^
required: class
found: type parameter T
where T is a type-variable:
T declared in class MyClass

我真的想不出发生这种情况的原因,所以我想知道是否有人可以阐明为什么 Java 不允许您从泛型类型变量继承。

最佳答案

我能想到的最明显的原因甚至与类型删除无关;事实上,当您将 A 设为 B 的子类时,Java 编译器需要知道 B 具有哪些构造函数。如果一个类没有无参数构造函数,那么它的子类必须调用它定义的构造函数之一。但是当你声明

public class MyClass<T> extends T {...}

编译器绝对不可能知道 super 构造函数是什么,因为 T 在编译时不是固定的(毕竟这是泛型的全部意义),这是一种情况在 Java 中是不允许的。

关于java - 为什么 Java 不允许您从泛型类型变量继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775386/

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