gpt4 book ai didi

java - 为什么我需要在这个 Java 通用子类中有一个构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:24 24 4
gpt4 key购买 nike

我正在使用 Java 泛型。这是问题后面的代码示例。

public class Test<T extends Comparable<T>>  {

T data;

public Test(T data) {

this.data = data;
}

public T getData() {

return this.data;
}
}

class MyClass<T extends Comparable<T>> extends Test<T> {
//if I remove this constructor, code will not compile
public MyClass(T data) {

super(data);
}
}

在 MyClass 中,如果我没有构造函数,我会得到以下编译时错误:

Implicit super constructor Test<T>() is undefined for default constructor. Must define an explicit constructor

为什么编译器让我这样做?

最佳答案

(此问题与泛型无关。)

Test 没有默认(即没有参数)构造函数。

因此,您的子类需要显式调用您在Test 中提供的单个构造函数。 (由于这种歧义,编译器无法确定要做什么 - 它如何知道要传递哪个参数 - 因此它会引发编译时错误。)

关于java - 为什么我需要在这个 Java 通用子类中有一个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22464596/

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