JavaSE-15.3.1【泛型概述】

 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 }

 

posted @ 2021-06-01 17:04  yub4by  阅读(46)  评论(0编辑  收藏  举报