Java泛型
泛型:https://blog.csdn.net/briblue/article/details/76736356
《Effective Java中文版》
上下限通配符:https://www.cnblogs.com/alsf/p/5690052.html
1. 泛型类型
- 泛型类。
- 泛型方法。
- 泛型接口。
2. 原生态类型
List list = new ArrayList<>(); 就是原生态类型
3. 类型参数
实例化、定义方法、定义接口的时候,传入的类型参数,一般用大写的字母表示;
List
}
4. 类型擦除
擦除就是使泛型可以与没有使用泛型的代码随意进行互用。
创建泛型、参数化类型或者类型参数的数组是非法的:
new List
new List
new E[];
都是非法的。
5. 通配符
除了用
Sub 是 Base 的子类,不代表 List和 List
通配符的出现是为了指定泛型中的类型范围。
通配符有 3 种形式:
- <?>被称作无限定的通配符。
- <? extends T>被称作有上限的通配符。
- <? super T>被称作有下限的通配符。
5.1 无限定通配符
如果使用“?“接收泛型对象的时候,则不能设置被泛型指定的内容。
5.2 有上限通配符
函数参数List<? extends Parent>,则传入参数的时候必须传入List
5.3 有下限通配符
函数参数List<? extends Sub>,则传入参数的时候必须传入List实例或者List<Sub父类>的实例。