Java泛型简单理解

时间:2021-05-21 20:49:29

优点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集合添加元素时,编译器会根据参数化类型来判断添加元素的数据类型是否合法,如果该类型是非参数化类型,编译器将给出错误提示信息。正常情况下这是在代码运行时才会提示异常错误,然而在编辑的时候就能提示出,很显然这加快了我们编程的效率。

Java泛型简单理解

优点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