泛型


什么是泛型:泛型是一种约束,检查数据类型,泛型的使用是为了避免出现classcastException异常,

通常在集合中使用,对于声明一个集合eg List,将数据存储进去的时候,不可以保证记住每个数据的属性,在读取的时候就会可能出现错误,

使用泛型可以定义存储的类型

 1 /**
 2  * 泛型Generic的使用与说明:
 3  * 泛型相当于标签:
 4  * 在集合中使用泛型:
 5  * 1:在实例化集合类时,可以指明具体的类型
 6  * 2:泛型的类型必须是类,不可以是基本数据类型,如果是使用包装类
 7  *
 8  *
 9  *
10  *
11  */
12 public class GenericTest {
13     @Test
14     public void test1(){
15         ArrayList arrayList=new ArrayList();
16         arrayList.add(12);
17         arrayList.add(18);
18         arrayList.add(78);
19         arrayList.add(123);
20         //问题1:类型不安全
21         arrayList.add("hpp");
22         for (Object obj:arrayList){
23         //问题2:可能出现类型转换异常
24             int stu= (Integer) obj;//虽然强转编译不报错,但是运行时异常
25             System.out.println(stu);
26         }
27     }
28     @Test
29     public void test2(){
30         ArrayListarrayList=new ArrayList();
31         arrayList.add(121);
32         arrayList.add(1);
33         arrayList.add(148);
34         arrayList.add(171);
35         arrayList.add(521);
36         //编译时就会进行类型检查,保证安全,
37         // arrayList.add("hpp");
38         //迭代器遍历
39         Iterator iterator=arrayList.iterator();
40         while (iterator.hasNext()){
41             System.out.println(iterator.next());
42         }
43         //增强for循环遍历
44         for (Integer obj:arrayList){
45             System.out.println(obj);
46         }
47     }
48     @Test
49     public void test3(){
50         //对于MAP接口使用泛型的情况
51         Map map=new HashMap();
52         map.put("hpp",23);
53         map.put("huang",13);
54     }
55 }