Код: Выделить всё
public static void main(String args) {
List integerList = Arrays.asList(1, 2, 3);
Gen gen = new Gen();
gen.m(integerList);
}
static class Gen {
void m(Collection collection) {
for (T s : collection) {
System.out.println(s);
}
}
void m(List list) {
for (String s : list) {
System.out.println(s);
}
}
}
Я просто начать разбираться в Java и Generics - очень сложная тема!
Я понимаю, что и List, и Collection - это интерфейсы, и указав их в параметрах, мы можем передать любой реализующий их класс, также я понимаю, что Collection позволит передать любая коллекция, содержащая ссылочные элементы в качестве параметра, и Список должен строго ограничивать передаваемый параметр коллекцией, содержащей коллекции с элементами типа String!
Но объявление класса необработанного типа Gen gen = new Gen(); выполняет вторую реализацию метода! Почему это происходит?
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-in-the-c