1、概要
JDK5以前,对象保存在集合中就会失去其特性,取出时通常要手工进行强制类型转换,这样就会出现不可避免的一些安全性问题。在JDK5以后泛型允许程序员在编写代码时限制集合的处理类型,从而将程序运行时可能发生的问题转为编译时的问题。
ArrayList list=new ArrayList();
list.add("abc");
Integer num=(Integer)list.get(0);
这个例子在编码的时候不会报错,但是在运行时就会出错。
2、泛型的几个注意事项
- 使用泛型时,泛型类型必须为引用类型,不能是基本数据类型。
- 泛型时提供给javac编译器使用的,他用于限定集合的输入类型,让编译器在源码级别上挡住向集合插入非法数据。但是编译器编译完有泛型的java程序后,生成class文件中将不再有泛型信息。以此提高程序运行效率。这个过程称为“擦除”。
- 结论:泛型左右两边的类型需要一样。
ArrayList<String> list=new ArrayList<Object>(); ArrayList<Object> list=new ArrayList<String>();
ArrayList<String> list=new ArrayList(); //一边使用泛型时可以的 ArrayList list=new ArrayList<String>();