Почему Java выполняет именно вторую реализацию метода() в классе?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему Java выполняет именно вторую реализацию метода() в классе?

Сообщение Anonymous »

Есть код, который намеренно допускает ошибки при параметризации класса и методов! Но вопрос в том, почему получается второй способ, а не первый, я уже голову сломал, не могу понять, объясните пожалуйста!?

Код: Выделить всё

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);
}
}

}
Почему при передаче целого списка в метод gen.m(целочисленный список) метод работает с параметрами списка списка, а не коллекции коллекции?
Я просто начать разбираться в Java и Generics - очень сложная тема!
Я понимаю, что и List, и Collection - это интерфейсы, и указав их в параметрах, мы можем передать любой реализующий их класс, также я понимаю, что Collection позволит передать любая коллекция, содержащая ссылочные элементы в качестве параметра, и Список должен строго ограничивать передаваемый параметр коллекцией, содержащей коллекции с элементами типа String!
Но объявление класса необработанного типа Gen gen = new Gen(); выполняет вторую реализацию метода! Почему это происходит?

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-in-the-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»