Java通配符

从三个方面理解子类型和超类型限定

(一)引用

Pair<? extends Employee> pair1 = Pair<Employee的子类>;
Pair<? super    Manager> pair2 = Pair<Manager的超类>;

(二)返回值类型

pair1.get() 返回值类型是 ? extends Employee ,是Employee的子类,可以赋值给Employee;

pair2.get() 返回值类型是 ? super Manager,是Manager的超类,但是不知道具体是那个超类,所以只可以赋值给一个Object

(三)传递类型

pair1.set(? extends Employee),拒绝传递任何类型,因为不确定是那个子类,所以不安全;

pair2.ser(? super Manager),(疑惑点)虽然传入类型在替换T后显示如此,但是却只能传递Manager的子类,或许是因为可以安全的向上转型为Manager

Last updated