Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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_Inheritance_Constructor - Fatal编程技术网

为什么我不能在Java中扩展具有不明确构造函数的类?

为什么我不能在Java中扩展具有不明确构造函数的类?,java,inheritance,constructor,Java,Inheritance,Constructor,我有以下资料: public class BogusSuper { public BogusSuper(Collection<String>... a) {} public BogusSuper(String... a) {} } } 当我尝试编译时,我得到一个错误:“对BogusSuper的引用是不明确的,BogusSuper中的构造函数BogusSuper(java.util.Collection…)和BogusSuper中的构造函数BogusSuper(jav

我有以下资料:

public class BogusSuper {
    public BogusSuper(Collection<String>... a) {}
    public BogusSuper(String... a) {}
}
}

当我尝试编译时,我得到一个错误:“对BogusSuper的引用是不明确的,BogusSuper中的构造函数BogusSuper(java.util.Collection…)和BogusSuper中的构造函数BogusSuper(java.lang.String…)都是匹配的


BogusSuper编译得很好。当我没有实际调用任何BogusSuper的构造函数时,为什么BogusSub会出现问题?我也尝试过显式设置多个构造函数,其中没有一个引用超类。

您有varargs参数
(SomeType…arg)
,它是
SomeType
数组的语法糖。当您调用此类方法时,将从参数推断类型,但当您不提供参数时,无法推断类型,因此两个方法都是相同的匹配

您“调用”构造函数的原因是,当您不定义构造函数时,会为您隐式定义一个没有参数的构造函数,-“默认构造函数”即:

如果不显式调用
super()
构造函数,则会隐式调用默认构造函数,即,它看起来像:

public BogusSub() {
     super(); // oops, can't tell which one you want
}
要解决此问题,请提供您自己的构造函数的类型化版本:

public class BogusSub extends BogusSuper {
    public BogusSuper(Collection<String>... a) {
        super(a); // typed to Collection<String>...
    }
    public BogusSuper(String... a) {
        super(a); // typed to String...
    }
}
public类BogusSub扩展了BogusSuper{
公共BogusSuper(集合…a){
super(a);//键入到集合。。。
}
公共BogusSuper(字符串…a){
super(a);//键入到字符串。。。
}
}

您有varargs参数
(SomeType…arg)
,这是
SomeType
数组的语法糖。当您调用这样一个方法时,类型是从参数推断出来的,但是当您不提供参数时,类型无法推断出来,因此两个方法都是相同的匹配

您“调用”构造函数的原因是,当您不定义构造函数时,会为您隐式定义一个没有参数的构造函数,-“默认构造函数”即:

如果不显式调用
super()
构造函数,则会隐式调用默认构造函数,即,它看起来像:

public BogusSub() {
     super(); // oops, can't tell which one you want
}
要解决此问题,请提供您自己的构造函数的类型化版本:

public class BogusSub extends BogusSuper {
    public BogusSuper(Collection<String>... a) {
        super(a); // typed to Collection<String>...
    }
    public BogusSuper(String... a) {
        super(a); // typed to String...
    }
}
public类BogusSub扩展了BogusSuper{
公共BogusSuper(集合…a){
super(a);//键入到集合。。。
}
公共BogusSuper(字符串…a){
super(a);//键入到字符串。。。
}
}

您有varargs参数
(SomeType…arg)
,这是
SomeType
数组的语法糖。当您调用这样一个方法时,类型是从参数推断出来的,但是当您不提供参数时,类型无法推断出来,因此两个方法都是相同的匹配

您“调用”构造函数的原因是,当您不定义构造函数时,会为您隐式定义一个没有参数的构造函数,-“默认构造函数”即:

如果不显式调用
super()
构造函数,则会隐式调用默认构造函数,即,它看起来像:

public BogusSub() {
     super(); // oops, can't tell which one you want
}
要解决此问题,请提供您自己的构造函数的类型化版本:

public class BogusSub extends BogusSuper {
    public BogusSuper(Collection<String>... a) {
        super(a); // typed to Collection<String>...
    }
    public BogusSuper(String... a) {
        super(a); // typed to String...
    }
}
public类BogusSub扩展了BogusSuper{
公共BogusSuper(集合…a){
super(a);//键入到集合。。。
}
公共BogusSuper(字符串…a){
super(a);//键入到字符串。。。
}
}

您有varargs参数
(SomeType…arg)
,这是
SomeType
数组的语法糖。当您调用这样一个方法时,类型是从参数推断出来的,但是当您不提供参数时,类型无法推断出来,因此两个方法都是相同的匹配

您“调用”构造函数的原因是,当您不定义构造函数时,会为您隐式定义一个没有参数的构造函数,-“默认构造函数”即:

如果不显式调用
super()
构造函数,则会隐式调用默认构造函数,即,它看起来像:

public BogusSub() {
     super(); // oops, can't tell which one you want
}
要解决此问题,请提供您自己的构造函数的类型化版本:

public class BogusSub extends BogusSuper {
    public BogusSuper(Collection<String>... a) {
        super(a); // typed to Collection<String>...
    }
    public BogusSuper(String... a) {
        super(a); // typed to String...
    }
}
public类BogusSub扩展了BogusSuper{
公共BogusSuper(集合…a){
super(a);//键入到集合。。。
}
公共BogusSuper(字符串…a){
super(a);//键入到字符串。。。
}
}

您在
BogusSub
中没有显式构造函数,编译器无法计算出它应该为您自动添加的默认无参数构造函数调用超类中的两个varargs构造函数中的哪一个

您可以通过添加类似这样的无参数构造函数(假设这与您想要的类似),使所需的超级构造函数显式化:


或者,如果更合适的话,您可以在
BogusSub
中添加一个无参数构造函数。

您在
BogusSub
中没有显式构造函数,并且编译器无法计算出它应该为它试图自动添加的默认无参数构造函数调用超类中的两个varargs构造函数中的哪一个或者你

您可以通过添加类似这样的无参数构造函数(假设这与您想要的类似),使所需的超级构造函数显式化:


或者,如果更合适的话,您可以在
BogusSub
中添加一个无参数构造函数。

您在
BogusSub
中没有显式构造函数,并且编译器无法计算出它应该为它试图自动添加的默认无参数构造函数调用超类中的两个varargs构造函数中的哪一个或者你

您可以通过添加类似这样的无参数构造函数(假设这与您想要的类似),使所需的超级构造函数显式化:


或者,如果这更合适,您可以在
BogusSub
中添加一个无参数构造函数。

您在
BogusSub
中没有显式构造函数,编译器无法计算出两个varargs常量中的哪一个