Реализация дженериков в Java - PullRequest
0 голосов
/ 08 января 2020
    List<? extends Person> list1 = null;
    List<? super Person> list2 = null;

    List<Student> list3 = new ArrayList<>();
    List<Person> list4 = new ArrayList<>();
    List<Object> list5 = new ArrayList<>();

    list3.add(new Student());

    list1 = list3;
    Person p1 = list1.get(0);
  //Student s1 = list1.get(0);

Студент является подклассом Person; (Студент расширяет Person)

Мой вопрос заключается в том, почему на list1.get (0) нельзя ссылаться напрямую (как в последнем закомментированном утверждении) объектом Ученический класс, потому что элементы list3 могут быть только объектами ученического класса или объектами его подклассов. Использование переменных, таких как 'Student s1' слева, будет правильным для ссылки на объект своего подкласса справа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...