Java 5.0中最显著的变化之一是添加对泛型类型的支持。在之前的版本中,Java程序并不是类型安全的。例如,使用List、Map等集合类实现的列表,可以用来操作整数、实数、字符串或者任何对象类型。例如:
List stringList = new ArrayList();
stringList.add("abcde");
StringList.add(new Integer(5));
在这种情况下,从字符列表中获取对象时,强制类型转换就会导致运行时异常。
泛型是Java迈向类型安全的一个重要步骤,使用泛型可以构造出类型安全的代码。所谓泛型是指类型参数化(Parameterized Types)。
public class GenSample< T > {}
其中T被称为类型参数(Type Parameter),类型参数可以被替换为任何的类型,但是不能是原始类型,如int、double。
例如下面的代码创建了一个泛型GenList。
package newpackage;
public class GenList< T > {
private T[] elements;
private int size = 0;
private int length = 0;
public GenList(int size) {
this.elements = (T[])new Object[size];
this.size = size;
}
public T get(int i) {
if(i < this.length) {
return this.elements[i];
}
return null;
}
public void add(T e) {
if(this.length < this.size) {
this.elements[length++] = e;
} else {
System.out.println("FULL");
}
}
}
使用该泛型的语句示例:
GenList gl = new GenList<>(5);