在Generics章节中,一句话引起了我的注意。对于以下声明List<? extends Shape>
,它说:
注意:它可能是Shape本身,或者是某些子类; 它不需要字面上扩展Shape 。
在此上下文中不是字面是什么意思?
答案 0 :(得分:2)
Shape
可以是一个接口,<? extends Shape>
可以是实现Shape
接口的类的实例。
答案 1 :(得分:2)
这意味着该类不到extend Shape
,即Shape
的直接子类。它也可以是Shape
本身,或者它可以是Shape
的间接子类,或Shape
可以是类interface
的{{1}}。作者试图传达的是,关键字implements
是出于方便而使用(向一种语言添加一个新的关键字是昂贵的)和熟悉,它不意味着每种类型都是可以使用在其定义中完全字符串extends
。
换句话说:作者字面意思意味着“字面上”与“字面意思”。