1 package day6.lesson3.p1;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Iterator;
6
7 /*
8 3 泛型
9
10 3.1 泛型概述
11 泛型概述
12 是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型
13 它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一提到参数,最熟悉的就是定义方
14 法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具
15 体的类型参数化,然后在使用/调用时传入具体的类型。这种参数类型可以用在类、方法和接口中,分别被称
16 为泛型类、泛型方法、泛型接口
17 泛型定义格式
18 <类型>:指定一种类型的格式。这里的类型可以看成是形参
19 <类型1,类型2…>:指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参
20 将来具体调用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型
21 泛型的好处
22 把运行时期的问题提前到了编译期间
23 避免了强制类型转换
24
25 例子:Collection集合存储字符串并遍历
26 */
27 public class GenericDemo {
28 public static void main(String[] args) {
29 // Collection collection = new ArrayList();
30 //默认存储Object类型
31
32 Collection<String> collection = new ArrayList<>();
33
34 collection.add("hello");
35 collection.add("world");
36 collection.add("java");
37 // collection.add(100); //基本数据类型int被自动装箱为Integer包装类
38 //Collection<String>加入泛型后,编译异常
39
40 // Iterator it = collection.iterator();
41 Iterator<String> it = collection.iterator();
42 while (it.hasNext()){
43 // Object obj = it.next();
44 // System.out.println(obj);
45
46 /* String str = (String)it.next(); //向下转型
47 //Collection<String>加入泛型前,运行异常
48 // java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
49 System.out.println(str);*/
50
51 //Iterator<String>加入泛型后,不需再对String进行强制类型转换
52 String str = it.next();
53 System.out.println(str);
54 }
55 }
56 }