泛型
约 287 字小于 1 分钟
2024-08-08
定义
泛型就是定义一种模板,实现编写一次,万能匹配,又通过编译器保证了类型安全
栗子
public static void main(String[] args) {
// ArrayList 是 java 的集合,这里没指定类型就是 Object
ArrayList list = new ArrayList();
list.add("Hello");
list.add(123);
for (Object o : list) {
String str = (String) o;
}
}ArrayList 可以存放任意类型,栗子中添加了一个 String 类型,添加了一个 Integer 类型,再使用时都以 String 的方式使用,因此程序崩溃了。为了解决类似这样的问题(在编译阶段就可以解决),泛型应运而生
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String我们将第一行声明初始化 list 的代码更改一下,编译器会在编译阶段就能够帮我们发现类似这样的问题
ArrayList<String> list = new ArrayList<String>();
.......
//list.add(123); 在编译阶段,编译器就会报错当然,泛型作为定义一种模板,ArrayList<T> 可以定义各种类型
// Integer 类型的 ArrayList 数组
ArrayList<Integer> integerlist = new ArrayList<Integer>();
// Double 类型的 ArrayList 数组
ArrayList<Double> doublelist = new ArrayList<Double>();