У меня есть два перегруженных метода: foo
и bar
//Object[]... vs Integer[]...
public static String foo(Object[]... args) { return "Object[] args"; }
public static String foo(Integer[]... args) { return "Integer[] args";}
//Object... vs Integer[]...
public static String bar(Object... args) {return "Object args";}
public static String bar(Integer[]... args) {return "Integer[] args";}
Теперь, когда я использую их как:
Integer[] i = { 5 };
System.out.println(foo(i));//Object[]... vs Integer[]...
System.out.println(bar(i));//Object... vs Integer[]...
Я получаю
Integer[] args
Object args
Вот вопрос: почему у нас есть 2 разных выхода? Integer[]
может быть неявно отбрасываться как на Object
, так и на Object[]
.