这篇文章总结泛型通配符和上下界限的问题,值得注意的一些细节问题。更多的源代码请访问我的github:https://github.com/yangsheng20080808/deepIntoJava
本文分为2大部分
- 泛型的继承关系是不变的(引用)
泛型通配符和上下界的限定
? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 <? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object
泛型的继承关系是不变的(引用)
子类型:
Java作为一种面向对象的语言,可以构建层次结构的类型:
在Java里,T类型的字类型可以是T的扩展也可以是T接口的实现。由于自类型是一种可传递的关系,如果A是B的子类,B是C的子类, 那么A也会是C的子类。如上图所示:
富士苹果是苹果的字类型
苹果是水果的字类型
富士苹果也是水果的字类型
每一个 Java类型都是Object的子类型。每一个类型B的子类型A都可以被赋值给B的引用:
Apple a = …; Fruit f = a;
泛型的子