Java 通配符类型
@author ixenos
- 通配符类型
- 通配符的子类型限定(?都是儿孙)
- <? extends T>
- Pair<? extends Employee> managerrr = new Pair<Manager>(ceo,cfo); //Manager是Employee子类,这里协变了(泛型的通配符类型可协变,而一般的泛型不可协变)
- 类型Pair<? extends Employee>的方法: //?是Manager的子类们
- void setFirst(? extends Employee) //不可调用,编译器只知道?的取值范围是儿孙,不知道具体是啥类型(?拒绝传递任何特定的类型)
- ? extends Employee getFirst() //可调用,返回值是可协变的,将任意Employee子类型的返回值传递给Employee引用就是协变(体现了多态性)
- 通配符的超类型限定(?都是祖宗)
- <? super T>
- 通配符的子类型限定(?都是儿孙)
-
-
- 类型Pair<? super Manager>的方法: //?是Manager的父类们
- void setFirst(? super Manager) //可调用,编译器不知道具体形参是,不能调用Employee对象,因为它不一定是爸爸,但可用任意Manager对象或其子类
- ? super Manager getFirst() //不可调用,返回类型是开放式的爸爸,可能类中修改了也不一定,不能保证类型安全,只能返回Object
- 类型Pair<? super Manager>的方法: //?是Manager的父类们
-
时间: 2024-10-06 02:43:55