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