隐式超级构造函数未使用Java泛型定义
我有以下基类和子类:隐式超级构造函数未使用Java泛型定义,java,generics,java-6,Java,Generics,Java 6,我有以下基类和子类: public class BaseClass<T> { public BaseClass(T value){ } public class NewClass<T> extends BaseClass<T> { public NewClass(T value){ } } 公共类基类{ 公共基类(T值){ } 公共类NewClass扩展了基类{ 公共类(T值){ } } 我得到以下错误:隐式超级构造函数基类(
public class BaseClass<T> {
public BaseClass(T value){
}
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
}
}
公共类基类{
公共基类(T值){
}
公共类NewClass扩展了基类{
公共类(T值){
}
}
我得到以下错误:隐式超级构造函数基类()未定义。必须显式调用另一个构造函数
如何解决此问题?将子类同构体更改为:
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
super(value);
}
}
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
super(value);
}
}
现在您可以看到,它试图调用0-arg
超类构造函数,编译器找不到。为什么?因为在超类中,您提供了1-arg
构造函数,编译器不会在那里添加任何默认构造函数。因此出现了错误
您还可以通过在超类中提供显式的
0-arg
构造函数来避免此问题,在这种情况下,原始子类代码将正常工作。如果它要求显式调用另一个构造函数,只需执行以下操作:
公共类NewClass扩展了基类{
公共类(T值){
超级(价值);
}
}
public class NewClass<T> extends BaseClass<T> {
public NewClass(T value){
super(value);
}
}