我正在使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
在MyClass中,如果我没有构造函数,则会出现以下编译时错误:
Implicit super constructor Test<T>() is undefined for default constructor. Must define an explicit constructor
Run Code Online (Sandbox Code Playgroud)
为什么编译器让我这样做?
(此问题与泛型无关.)
Test 没有默认(即没有参数)构造函数.
因此,您的子类需要显式调用您提供的单个构造函数Test.(由于这种模糊性,编译器无法弄清楚要做什么 - 它如何知道要传递哪个参数 - 因此它会引发编译时错误.)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |