Ничего страшного, с оговоркой, что null
можно преобразовать в String[]
или String
:
public class Test {
public Test(String single) {
System.out.println("Single");
}
public Test(String... multiple) {
System.out.println("Multiple");
}
public static void main(String[] args) {
new Test("Foo"); // Single
new Test("Foo", "Bar"); // Multiple
new Test(); // Effectively multiple
// new Test(null); // Doesn't compile - ambiguous
new Test((String) null); // Single
}
}
РЕДАКТИРОВАТЬ: Теперь, когда вы показали нам код вызова,это определенно проблема:
public void reserver(String...nom){
Groupe gr = new Groupe(nom);
passager.add(gr);
}
Здесь тип nom
равен String[]
- поэтому он всегда будет вызывать первый конструктор.У вас есть массив строк - при каких обстоятельствах вы хотите вызвать второй конструктор?
Если честно, учитывая, что два конструктора действуют значительно по-разному, я бы на самом деле сделал оба конструктора частными, ипредоставьте статические методы:
public static Groupe fromStringArray(String... nom)
public static Groupe fromCommaSeparatedString(String nom)
Тогда будет абсолютно ясно , что вы ожидаете в каждом случае.