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]

0 ответов

Другие вопросы по тегам