Компилятор вычисляет один из общего списка аргументов от другого? - PullRequest
0 голосов
/ 25 ноября 2018

Выдержка из книги «Мышление на Java»:

Одна из жалоб на дженерики заключается в том, что она добавляет еще больше текста в ваш код.Подумайте об этом:

Map<Person, List<? extends Pet>> petPeople = 
                                 new HashMap<Person, List<? extends Pet>>();

Похоже, что вы повторяете себя, и что компилятор должен выяснить один из общих списков аргументов из другого.Увы, он не может , ...

Означает ли это, что явная спецификация типа с обеих сторон предписана компилятором?

Напротив, мне кажется, что он работает нормально (без явных указаний):

Map<Person, List<? extends Pet>> petPeople = new HashMap();

1 Ответ

0 голосов
/ 25 ноября 2018

Вы читаете древнюю книгу, она прекрасно работает со времен Java-7 и дополнением оператора diamond:

Map<Person, List<? extends Pet>> petPeople = new HashMap<>();
...