2011-04-12 47 views

回答

38

的问题。

例如:

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

public Example(SomeOther other) { 
    this.other = other; 
} 

如果调用构造函数和String对象,有一个明确的构造函数。但是,如果您实例化new Example(null),那么它可能适用于任何一种,因此不明确。

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

5

这意味着你有两个构造函数具有相同签名,或者你想创建的Case新实例参数可以匹配多个构造函数。

你的情况:

Case(Problem, Solution, double, CaseSource) 

Java中创建方法(构造函数)的签名与参数类型。您可以使用两种类似的参数类型,因此可能通过提供可能匹配多个方法(构造函数)签名的模糊参数来生成模糊调用。

您可以复制此错误与此代码(这是不偏食的错):当你尝试实例可以适用于多个构造函数的类存在

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

    static public void main(String...args) { 
     new A(null); // <== constructor is ambiguous 
    } 
} 
+4

你怎么能有两个具有相同签名的构造函数。在eclipse中它会给出错误:'类型Cls' – 2011-04-12 14:01:12

+0

中的重复方法方法(params)不能有两个具有相同签名的构造函数(方法)。 – GuruKulki 2011-04-12 14:03:23

3

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

+3

它是一个评论而不是答案 – 2012-08-24 04:37:54

+1

这是一个答案,但不是一个有用的答案。也许更长的解释会有所帮助。 – Daniel 2015-06-26 22:08:43

4

要添加到其他的答案,它可以通过铸造参数何意避免,例如:

class Foo { 

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

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

} 
相关问题