为什么要使用泛型?

为什么要使用泛型?


一、为什么要使用泛型?

这几天学习泛型,心里一直有个疑惑为什么要使用泛型?今天决定整理整理

使用泛型的好处:

       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、开发简单(代码更加的简单)

猜你喜欢

转载自blog.csdn.net/weixin_42867975/article/details/99989974