基础概念
定义
- 泛型类定义时,不指定具体类型。
- 实例化对象时,指定具体类型,若不指定,默认Object类型
-
常用类型
解决的问题
解决编译时的模糊类型
-
泛型使用
泛型子类
泛型子类对象与父类泛型相同
-
泛型接口
泛型接口继承泛型接口,与接口类类型一致,可进行泛型扩充
非泛型接口实现泛型接口需指定类型
//父类public class Parent<T>{private T key;public Parent(T key){this.key=key;}public T getKey(){return key;}}//子类public class Child<T,E> implements Parent<T>{private T key;private E value;public Child(T key,E value){this.key=key;this.value=value;}public T getKey(){return key;}}
泛型方法
//参数和返回值中使用的泛型,需要在前面的泛型列表中<E>public <E> E getNewValue(List<E> e){return null;}
类型通配符
使用”?”代表泛型参数
//设置类型通配符上限边界public void getFirstNumber(List<? extends Number> list){Number num = list.get(0);System.out.println(num);}//设置类型通配符下限边界public void getFirstNumber(List<? super Number> list){Number num = list.get(0);System.out.println(num);}
类型擦除
-
泛型数组
//方法一ArrayList<String>[] intList = new ArrayList[5];//方法二public class Fruit<T>{private T[] array;public Fruit(Class<?> clz,int length){array = (T[])Array.newInstance(clz,length);}}Fruit<String> fruit = new Fruit<>(String.class,3);
