- 1 Java上转型和下转型
- 2 范型中上下转型
- 2.1 extends T> 实现上转型
- 2.2 super T>实现下转型
- 3 协变、逆变
Java上转型: 子类引用的对象转为父类,可以实现自动转型;
Java下转型: 父亲类引用的对象转为子类,需要进行强制转换。
首先JDK中的数组也是范型,可以进行类似向上的转型,例如:
Animal[] animals = new Animal[10] ; animals. = new Dog[10];//Dog 是Animal的子类。
但如下操作却不允许
List2 范型中上下转型 2.1 extends T> 实现上转型 2.2 super T>实现下转型 3 协变、逆变
对于范型的向上下转型,更专业称呼叫协变和逆变。斜变和逆变在物理中被普遍使用,描述了一个物理量伴随坐标系变化而发生的变化。在Java范型逆变和协变描述了范型中真实类型发生变化后,范型类引用的兼容关系。设A、B确切类型,f(.)表示范型类,A<=B表示A是B的子类,那么存在:
A <=B: f(A) <= f(B); A<= B: f(A) >= f(B)
同时java范型通配符>可以支持范型同时支持逆变和协变:
List> list = new ArrayList(); list = new ArrayList (); list = new ArrayList



