泛型从Java SE 5.0 中开始出现,是 Java 程序设计语言从 1.0 版本发布以来,变化最大的部分。
使用泛型机制编写的程序代码要比那些杂乱地使用 Object 变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。特别的泛型对集合类尤其有用,例如,ArrayList 就是一个无处不在的集合类。
至少在表面上看来, 泛型很像 C++ 中的模板(template)。
8.1 为什么要使用泛型程序设计
泛型程序设计(Generic programming) 意味着编写的代码可以被很多不同类型的对象所重用。
8.1.1 类型参数的好处
在 Java 中增加范型类之前, 泛型程序设计是用继承实现的。ArrayList 类只维护一个 Object 引用的数组:
public class ArrayList // before generic classes
{
private Object[] elementData;
...
public get Object get(int i){...}
public get Object add(Object o){...}
}
这种方法有两个问题。
// 当获取一个值时必须进行强制类型转换。
ArrayList files = new ArrayList();
...
String filename = (String) files.get(0);
// 此外,这里没有错误检査。可以向数组列表中添加任何类的对象。
files,add(new File(". .."));