JAVA 集合进阶 泛型类、泛型方法、泛型接口
1 泛型类
使用场景:当一个类中,某个变量的教据类型不确定时就可以定义带有泛型的类
1.1 格式
此处E可以理解为变量,但是不是用来记录数据的,而是记录数据的类型,可以写成:T、E、K、V 等
1.2 例子
泛型类
package com.bjpowernode.test16;import java.util.Arrays;public class MyArrayList <E>{Object[] obj = new Object[10];int size;//E:表示是不确定的类型。该类型在类名后面已经定义过了。//e:形参的名字,变量名public boolean add(E e){obj[size++] = e;return true;}public E get(int index){return (E)obj[index];}@Overridepublic String toString() {return Arrays.toString(obj);}
}
测试类
package com.bjpowernode.test16;public class test {public static void main(String[] args) {MyArrayList<String> list = new MyArrayList<>();list.add("aaa");list.add("bbb");list.add("ccc");System.out.println(list);System.out.println(list.toString());}
}
运行结果:
2 泛型方法
方法中形参类型不确定时
- 方案①:使用类名后面定义的泛型 所有方法都能用
- 方案②:在方法申明上定义自己的泛型 只有本方法能用
2.1 格式
2.2 练习
定义一个工具类:ListUtil
类中定义一个静态方法addAll,用来添加多个集合的元素
泛型方法
package com.bjpowernode.test16;import java.util.ArrayList;public class ListUUitl {private ListUUitl(){}//类中定义一个静态方法addAll,用来添加多个集合的元素。public static<E> void addAll(ArrayList<E>list, E e1, E e2, E e3, E e4){list.add(e1);list.add(e2);list.add(e3);list.add(e4);}}
测试类
package com.bjpowernode.test16;import java.util.ArrayList;public class test2 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();ListUUitl.addAll(list, "aaa","bbb","ccc","ddd");System.out.println(list);ArrayList<Integer> list2 = new ArrayList<>();ListUUitl.addAll(list2,111,222,333,444);System.out.println(list2);}
}
运行结果:
3 泛型接口
3.1 格式
3.2 如何使用一个带泛型的接口
方式1:实现类给出具体类型
方式2:实现类延续泛型,创建对象时再确定
参考链接:
集合进阶-08-泛型类、泛型方法、泛型接口,更新到最后_哔哩哔哩_bilibili