优点1:
没有使用泛型,向list集合中添加非字符串,运行时会报错:类型不匹配
ObjectList.java:
1 package cn.nxl2018; 2 import java.util.ArrayList; 3 import java.util.List; 4 public class ObjectList { 5 public List getList() { 6 List list = new ArrayList(); 7 list.add(new Integer(20));//此句会报错:类型不匹配 8 list.add("b"); 9 list.add("c"); 10 return list; 11 } 12 }
GenericityDemo.java:
1 package cn.nxl2018; 2 import java.util.List; 3 public class GenericityDemo { 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 ObjectList objectList = new ObjectList(); 7 List list=objectList.getList(); 8 String string = (String)list.get(1); 9 System.out.println(string); 10 } 11 }
使用泛型:
如果指定了list集合里放的是String类型的数据,在编辑代码的时候,add()方法处就会自动报错指出类型不匹配(下图所示)。也就是说当为list集合添加元素时,编译器会根据参数化类型来判断添加元素的数据类型是否合法,如果该类型是非参数化类型,编译器将给出错误提示信息。正常情况下这是在代码运行时才会提示异常错误,然而在编辑的时候就能提示出,很显然这加快了我们编程的效率。
优点2: 没有使用泛型的情况下,用get()方法获取list中的数据时,还需要进行数据转换,比较麻烦。
1 List list=objectList.getList(); 2 String string = (String)list.get(1);//Object类型转换为String类型
如果使用泛型去指定获取数据的类型,那么在用get()获取list中的数据时,返回的值的类型直接就是指定的String类型,省去了将原始Object类型数据转换为String类型的麻烦。
1 List<String> list=objectList.getList(); 2 String string = list.get(0);
附:为了普遍性,传统的List类的add()方法中的参数类型均是Objext类型,对应的get()返回值的类型也是Object类型。
关联CSDN博客:https://blog.csdn.net/m0_38022608/article/details/80197701