通配符类型
严格的泛型类型使用起来并不是那么让人愉快,类型系统的设计人员已经意识到这一点,并且给出了一种巧妙的(但很安全的)“解决方案”——通配符类型。
通配符概念
在通配符类型中,允许参数类型发生变化。
通配符的超类型限定
通配符限定与类型变量限定十分类似,但是还有一个附加能力:可以指定一个超类型限定。
例如:? super Manager
这个通配符限制为Manager的所有超类型。
Ex:
Pair<? super Manager> 有如下方法:
void setFirst (? super Manager)
? super Manager getFirst()
编译器无法知道setFirst()的具体类型,因此不能接受参数类型为Employee或Object的方法调用。
直观的讲,带有超类型限定的通配符允许写入一个泛型对象。而带有子类型限定的通配符允许读取一个泛型对象。