Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐式超级构造函数未使用Java泛型定义_Java_Generics_Java 6 - Fatal编程技术网

隐式超级构造函数未使用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);
    }
}