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 }