Я столкнулся с этим странным (на мой взгляд) поведением сегодня. Пройдите этот простой тестовый класс:
public class Test {
public static void main(String[] args) {
Test t = new Test();
t.run();
}
private void run() {
List<Object> list = new ArrayList<Object>();
list.add(new Object());
list.add(new Object());
method(list);
}
public void method(Object o) {
System.out.println("Object");
}
public void method(List<Object> o) {
System.out.println("List of Objects");
}
}
Он ведет себя так, как вы ожидаете, печатая «Список объектов». Но если вы измените следующие три строки:
List<String> list = new ArrayList<String>();
list.add("");
list.add("");
вместо этого вы получите «Объект».
Я пробовал это несколькими другими способами и получил тот же результат. Это ошибка или это нормальное поведение? И если это нормально, может кто-нибудь объяснить, почему?
Спасибо.