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

Java 什么是;构造器。。。是含糊不清的;什么意思?

Java 什么是;构造器。。。是含糊不清的;什么意思?,java,eclipse,Java,Eclipse,我想知道Eclipse中的错误消息是什么意思: 构造函数案例(问题、解决方案、双精度、CaseSource)不明确 这意味着您有两个具有相同签名的构造函数,或者您正试图创建一个新的Case实例,其参数可以匹配多个构造函数 就你而言: Case(Problem, Solution, double, CaseSource) Java使用参数类型创建方法(构造函数)签名。您可以有两个具有相同相似参数类型的方法,因此可以通过提供可匹配多个方法(构造函数)签名的不明确参数来生成不明确调用 您可以使用以下

我想知道Eclipse中的错误消息是什么意思:

构造函数案例(问题、解决方案、双精度、CaseSource)不明确


这意味着您有两个具有相同签名的构造函数,或者您正试图创建一个新的
Case
实例,其参数可以匹配多个构造函数

就你而言:

Case(Problem, Solution, double, CaseSource)
Java使用参数类型创建方法(构造函数)签名。您可以有两个具有相同相似参数类型的方法,因此可以通过提供可匹配多个方法(构造函数)签名的不明确参数来生成不明确调用

您可以使用以下代码重现此错误(这不是eclipse的错误):

class A {
    public A(String a) { }
    public A(Integer a) { }

    static public void main(String...args) {
        new A(null);    // <== constructor is ambiguous
    }
}
A类{
公共A(字符串A){}
公共A(整数A){}
静态公共void main(字符串…参数){

新的A(null);//当您尝试实例化一个可以应用于多个构造函数的类时,问题就存在了

例如:

public Example(String name) {
    this.name = name;
}

public Example(SomeOther other) {
    this.other = other;
} 
如果使用字符串对象调用构造函数,则有一个明确的构造函数。但是,如果实例化
newexample(null)
,则它可能应用于其中一个,因此不明确


这同样适用于具有类似签名的方法。

换句话说,不清楚必须调用哪个构造函数。

要添加到其他答案中,可以通过将参数转换为预期内容来避免,例如:

class Foo {

    public Foo(String bar) {}
    public Foo(Integer bar) {}

    public static void main(String[] args) {
        new Foo((String) null);
    }

}

Case
类中还有哪些其他构造函数?如何有两个具有相同签名的构造函数。在eclipse中,它将给出错误:
Cls类型中的重复方法(params)
不能有两个构造函数(方法)相同签名。这是一个注释,而不是答案。这是一个答案,但不是一个有用的答案。也许更长的解释会有所帮助。如果您需要两个构造函数,并且能够使用null初始化,我会添加。您可以将null强制转换为所需的变量。例如:新示例((字符串)null);