我想知道是什么Eclipse中的错误消息意味着:“构造函数......含糊不清”是什么意思?
The constructor Case(Problem, Solution, double, CaseSource) is ambiguous
我想知道是什么Eclipse中的错误消息意味着:“构造函数......含糊不清”是什么意思?
The constructor Case(Problem, Solution, double, CaseSource) is ambiguous
的问题。
例如:
public Example(String name) {
this.name = name;
}
public Example(SomeOther other) {
this.other = other;
}
如果调用构造函数和String对象,有一个明确的构造函数。但是,如果您实例化new Example(null)
,那么它可能适用于任何一种,因此不明确。
这同样适用于具有相似签名的方法。
这意味着你有两个构造函数具有相同签名,或者你想创建的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
}
}
你怎么能有两个具有相同签名的构造函数。在eclipse中它会给出错误:'类型Cls' – 2011-04-12 14:01:12
中的重复方法方法(params)不能有两个具有相同签名的构造函数(方法)。 – GuruKulki 2011-04-12 14:03:23
换句话说,不清楚哪个构造函数必须被调用。
它是一个评论而不是答案 – 2012-08-24 04:37:54
这是一个答案,但不是一个有用的答案。也许更长的解释会有所帮助。 – Daniel 2015-06-26 22:08:43
要添加到其他的答案,它可以通过铸造参数何意避免,例如:
class Foo {
public Foo(String bar) {}
public Foo(Integer bar) {}
public static void main(String[] args) {
new Foo((String) null);
}
}
你有没有在'Case'类其他什么构造? – biziclop 2011-04-12 13:53:55
而代码是? – khachik 2011-04-12 13:54:29