Java中的集合是可以存储任何类型的数据的,但是当我们在一个集合中存储多种类型时,取出数据时这个对象的编译类型就变成了Object类型,在程序中无法确定一个集合中的元素到底是什么类型的,取出元素时如果进行强制类型转换就很容易出错。
由此引出了“参数化类型(parameterized type)”这个概念,即我们常说的泛型。它可以限定方法操作的数据类型,在定义集合类时,使用,<泛型>的方式指定该类中方法操作的数据类型。
ArrayList<String> list = new ArrayList<String>(); //指定泛型为String
上面这个集合就只能存储String类型的数据,不然在编译的时候就会报错,避免了可能在运行时报错。
- 自定义泛型
在定义一个类的时候使用<T>声明参数类型(T是type的缩写)。
class CachePool<T> { //在创建类的时候,声明参数类型为T
T temp;
public void save(T temp) { //在创建save(),指定参数类型为T
this.temp = temp;
}
public T get() { //在创建get()方法时,指定返回值类型为T
return temp;
}
}
class Example {
public static void main(String[] args) {
//在实例化对象时,传入参数为Integer类型
CachePool<Integer> pool = new CachePool<>();
pool.save(new Integer(1));
Integer temp = pool.get();
}
}
参考资料:《Java基础入门》
网友评论