Java中为什么要引入泛型

优点1:

没有使用泛型,向list集合中添加非字符串,运行时会报错:类型不匹配

ObjectList.java
package cn.nxl2018;
import java.util.ArrayList;
import java.util.List;
public class ObjectList {
    public List getList() {
        List list = new ArrayList();
        list.add(new Integer(20));//此句会报错:类型不匹配
        list.add("b");
        list.add("c");
        return list;
    }
}
GenericityDemo.java
package cn.nxl2018;
import java.util.List;
public class GenericityDemo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ObjectList objectList = new ObjectList();
        List list=objectList.getList();
        String string = (String)list.get(1);
        System.out.println(string);
    }
}

使用泛型:
- 如果指定了list集合里放的是String类型的数据,在编辑代码的时候,add()方法处就会自动报错指出类型不匹配(下图所示)。也就是说当为list集合添加元素时,编译器会根据参数化类型来判断添加元素的数据类型是否合法,如果该类型是非参数化类型,编译器将给出错误提示信息。正常情况下这是在代码运行时才会提示异常错误,然而在编辑的时候就能提示出,很显然这加快了我们编程的效率。
这里写图片描述

优点2:

没有使用泛型的情况下,用get()方法获取list中的数据时,还需要进行数据转换,比较麻烦。

List list=objectList.getList();
String string = (String)list.get(1);//Object类型转换为String类型

如果使用泛型去指定获取数据的类型,那么在用get()获取list中的数据时,返回的值的类型直接就是指定的String类型,省去了将原始Object类型数据转换为String类型的麻烦。

List<String>  list=objectList.getList();
String string = list.get(0);

附:为了普遍性,传统的List类的add()方法中的参数类型均是Objext类型,对应的get()返回值的类型也是Object类型。

关联博客(博客园):http://www.cnblogs.com/qikeyishu/p/8992461.html

猜你喜欢

转载自blog.csdn.net/m0_38022608/article/details/80197701
今日推荐