【问题标题】:Java Generics : Understanding Bounded WildcardsJava 泛型:理解有界通配符
【发布时间】:2017-11-09 16:35:15
【问题描述】:

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

注意:它可以是 Shape 本身,也可以是某个子类; 它不需要从字面上扩展 Shape

在这种情况下不是字面意思是什么意思?

【问题讨论】:

  • 教程中的措辞可能会更好。改写成“它不需要直接扩展Shape”会更清楚吗?

标签: java generics inheritance wildcard


【解决方案1】:

这意味着该类没有extend Shape,即是Shape 的直接子类。它也可以是Shape 本身,或者它可以是Shape 的间接子类,或者Shape 可以是interfaceimplements。作者试图传达的是,关键字extends 是出于方便(为语言添加新关键字代价高昂)和熟悉度而使用的,它确实不是意味着每种类型都可以used 必须完全在其定义中包含字符串extends Shape

换句话说:作者literally用“literally”表示“literally”。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多