不确定我有以下的基类和子类:隐超构造与Java的泛型
public class BaseClass<T> {
public BaseClass(T value){
}
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
}
}
我得到以下错误:隐式超级构造函数BaseClass的()是不确定的。必须明确调用另一个构造函数
我该如何解决这个问题?
不确定我有以下的基类和子类:隐超构造与Java的泛型
public class BaseClass<T> {
public BaseClass(T value){
}
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
}
}
我得到以下错误:隐式超级构造函数BaseClass的()是不确定的。必须明确调用另一个构造函数
我该如何解决这个问题?
子类cosntructor更改为:
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
super(value);
}
}
如果不加super(value);
,那么编译器会自动添加一个,这将连锁到0-arg
构造超一流的。基本上,你原来的子类构造函数被编译为:
public NewClass(T value){
super();
}
现在可以看到的是,它试图调用0-arg
超类构造函数,编译器无法找到。为什么?由于在超类中,您提供了1-arg
构造函数,因此编译器不会在其中添加任何默认构造函数。因此,这个错误。
你也可以通过在你的超类中给出一个明确的0-arg
构造函数来避免这个问题,在这种情况下,你的原始子类代码可以正常工作。
如果它要求明确地调用另一个构造函数,只要做到这一点:
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
super(value);
}
}