Я хотел бы знать, что означает сообщение об ошибке в Eclipse:
Случай конструктора (проблема, решение, double, CaseSource) неоднозначен
Я хотел бы знать, что означает сообщение об ошибке в Eclipse:
Случай конструктора (проблема, решение, double, CaseSource) неоднозначен
Проблема возникает при попытке создать экземпляр класса, который может применяться к нескольким конструкторам.
Например:
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
}
}
Чтобы добавить другие ответы, этого можно избежать, добавив аргумент к тому, что предназначено, например:
class Foo {
public Foo(String bar) {}
public Foo(Integer bar) {}
public static void main(String[] args) {
new Foo((String) null);
}
}
Другими словами, неясно, какой из конструкторов нужно вызывать.