# Java通配符

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

## **（一）引用**

```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
