泛型-学习
2020-11-08 本文已影响0人
Superhi
1、什么是泛型?
参数化类型, 比如形参,不提前只能参数的类型。
可以用在类、接口、方法中分别是泛型类、泛型接口、泛型方法。
2、eg:(JDK1.5之后引入泛型) List<String> arrayList = new ArrayList<String>();
3、 泛型只在编译阶段有效。
4、普通的泛型类
![](https://img.haomeiwen.com/i20133972/04b9dced57a96ff6.png)
5、泛型接口
![](https://img.haomeiwen.com/i20133972/f8cc8d6ba0a9f2a0.png)
![](https://img.haomeiwen.com/i20133972/caf1f5fff094f9fa.png)
6、通配符(?)为了解决 参数类型的不同
![](https://img.haomeiwen.com/i20133972/9d9c194d481fdc3e.png)
限定通配符和非限定通配符
<? extends T> T的子类--上界 List<? extends T>
<? super T> T的父类---下界 List <? super T>
<?>非限定通配符
7、泛型方法:在调用的时候指明泛型的具体类型。
![](https://img.haomeiwen.com/i20133972/72987d42f98d0d75.png)
Object obj = genericMethod(Class.forName("com.test.test"));
8、java中是”不能创建一个确切的泛型类型的数组” 但是使用通配符可以
List<String>[] ls = new ArrayList<String>[10]; no
List<?>[] ls = new ArrayList<?>[10]; Y
List<String>[] ls = new ArrayList[10]; Y
9、写一个简单的泛型方法:T, E or K,V
public V put(K key, V value) {
return cache.put(key, value);
}