通配符
- 限定通配符
<? extends T>
确保类型必须是T的子类,用于读.读取T1为T的子类,确保T中的元素能在T1中呈现.
eg:初始化时使T为Number,则可以读取出Integer/Double..<? super T>
确保类型必须是T的父类,用于写.写入T1为T的父类,确保T1中的元素能保存到T中.
eg:初始化时,使T为Integer,则可以写入Integer/Number/Object
- 非限定通配符
<?>
可以用任意类型替代
类型擦除
- 泛型只允许编译期间非法类型的检测,当运行时,泛型会变换成Object,List T会变成List.即类型擦除
注意:Array不能接受泛型,而List能接受.因为Array不能保证编译期的类型安全,而List能保证.类型安全指Object[]能接受Integer[],而List Object不能接受List Integer.