Java vararg против перегрузки коллекций
Рассмотрим следующий код:
public class SimpleTest {
public static void print(Collection<Object> strings) {
System.out.println("Collection overload: " + strings);
}
public static void print(Object... strings) {
System.out.println("Vararg overload: " + Arrays.asList(strings));
}
@Test
public void test() {
List<String> strings = Arrays.asList("hello", "world");
print(strings);
}
}
Какой у вас прогноз на выходе?
Оказывается, правильный ответ таков!
Vararg overload: [[hello, world]]
Если вы догадались, не могли бы вы объяснить, почему это не перегрузка коллекции?
Обновить
Если я изменю перегрузку коллекции на
public static void print(Collection<String> strings) {
System.out.println("Collection overload: " + strings);
}
или же
public static void print(Collection strings) {
System.out.println("Collection overload: " + strings);
}
Тогда это выводит
Collection overload: [hello, world]