2024-07-02    2024-07-02    451 字  1 分钟

种类

List、List<Object> 、List<?> 、List<T>、List<? extend T>、List<? Super T>

1. List<Object> 与无泛型 List 差不多,都可往里 add 任何对象,但意义不大,只能往里 add,取出遍历往往出现类型错误

2. List<?> 泛型不确定的集合,一般用来接收不能确定泛型的集合

**3. 重点区分 List<? extend T>、List<? Super T> **

功能/类型List<? extend T>List<? Super T>
特性GET FIRSTPUT FIRST
实际存储内容T 及 T 子类对象, null
1. 初始化时接受 T 及 T 子类型的 list。
2. 不能 add
T 及 T 子类对象,T 的父类对象,null
1. 初始化时可接受父类类型的 list。
2. add 操作时只能添加 T 及 T 子类对象
get 功能获取到的值强转为 T,子类对象丢失泛型
T t = list.get(0);
获取到对象类型为 Object,所有对象丢失类型
Object o = list.get(0);
put 功能除 null 外,其余对象均不能被 add可 put 对象:null,T 及 T 子类对象
集合值接收(初始化)T 及 T 子类类型的 List 可赋值给该泛型 listT 及 T 父类类型的 list 可赋值给该泛型 list
PECS常用来做结果接收 producer Extend常用来做参数 Consumer Super