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 @   yub4by  阅读(48)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示