Java泛型:理解有界通配符

时间:2017-11-09 16:35:16

标签: java generics inheritance wildcard

Generics章节中,一句话引起了我的注意。对于以下声明List<? extends Shape>,它说:

  

注意:它可能是Shape本身,或者是某些子类; 它不需要字面上扩展Shape

在此上下文中不是字面是什么意思?

2 个答案:

答案 0 :(得分:2)

Shape可以是一个接口,<? extends Shape>可以是实现Shape接口的类的实例。

答案 1 :(得分:2)

这意味着该类extend Shape,即Shape的直接子类。它也可以是Shape本身,或者它可以是Shape的间接子类,或Shape可以是类interface的{​​{1}}。作者试图传达的是,关键字implements是出于方便而使用(向一种语言添加一个新的关键字是昂贵的)和熟悉,它意味着每种类型都是可以使用在其定义中完全字符串extends

换句话说:作者字面意思意味着“字面上”与“字面意思”。