Java 5之后提供泛型(Generics)支持,使用泛型可以最大限度地重用代码、保护类型的安全以及提高性能。泛型特性对Java影响最大是集合框架的使用。
对于Java 5之前程序员而言,使用集合经常会面临一个很尴尬的问题:放入一个种特定类型,但是取出时候全部是Object类型,于是在具体使用时候需要将元素转换为特定类型。上述代码第①行取出的元素是Object类型,在代码第②行需要强制类型转换。强制类型转换是有风险的,如果不进行判断就臆断进行类型转换会发生ClassCastException异常。
而泛型的引入可以将这些运行时异常提前到编译期暴露出来,这增强了类型安全检查。
自定义泛型类
public class Queue<T> {
// 声明保存队列元素集合items
private List<T> items;
// 构造方法初始化是集合items
public Queue() {
this.items = new ArrayList<T>();
}
/**
* 入队方法
* @param item 参数需要入队的元素
*/
public void queue(T item) {
this.items.add(item);
}
/**
* 出队方法
* @return 返回出队元素
*/
public T dequeue(){
if (items.isEmpty()) {
return null;
} else {
return this.items.remove(0);
}
}
@Override
public String toString() {
return items.toString();
}
}
网友评论