为什么要使用泛型?
一、为什么要使用泛型?
这几天学习泛型,心里一直有个疑惑为什么要使用泛型?今天决定整理整理
使用泛型的好处:
1、在编译期就能够进行强制的类型检查,比运行时错误的排查难度减小
2、避免了类型的转换
3、开发简单(代码更加的简单)
二、举例说明
这里先使用传统的方式创建一个对象的容器,它能够放下任何类型的对象,如下所示
ObjectContainer中的代码
/**
* 一个任意类型对象的容器
*/
public class ObjectContainer {
private Object obj;
public void setObj(Object obj){//Object是所有类型的父类,因此能够存放任意类型的对象
this.obj = obj;
}
public Object getObj() {
return obj;
}
}
测试类Test类中的代码:
public class Test {
public static void main (String [] args){
ObjectContainer objectContainer = new ObjectContainer();
//存一个整型,自动装箱
objectContainer.setObj(3);
List objectList = new ArrayList();
objectList.add(objectContainer);
//①故意的使返回值为String类型,实际上是Integer,但是编译器在编译时并不会发现错误,不会给我们提醒,在运行时才会爆发异常
//②使用此种方法去存取任意的对象时需要不停的进行类型转换,非常的麻烦
String mystr = (String) ((ObjectContainer)objectList.get(0)).getObj();
System.out.print(mystr);
}
}
运行结果:运行时才爆发异常
使用泛型去创建一个对象的容器,如下所示:
GenericContainer容器中的代码:
public class GenericContainer<T> {
private T obj;
public void setObj(T obj){
this.obj = obj;
}
public T getObj(){
return obj;
}
}
Test中的代码:
总结:使用泛型有如下优点
1、在编译期就能够进行强制的类型检查,比运行时错误的排查难度减小
2、避免了类型的转换
3、开发简单(代码更加的简单)