泛型
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>();