编译器是否会从另一个中找出一个通用参数列表?

时间:2018-11-25 18:18:12

标签: java generics type-inference

“ Java思维”书摘录:

  

关于泛型的抱怨之一是它向其中添加了更多文本   您的代码。考虑一下:

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

您似乎在重复自己,并且编译器   应该从另一个中找出一个通用参数列表。   <,无法,...

这是否意味着两侧的显式类型规范由编译器强制执行?

相反,它对我来说似乎很好(不明确):

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

1 个答案:

答案 0 :(得分:4)

您阅读的是一本古老的书本,自Java-7和增加了Diamond运算符以来,它的工作就很好了:

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