Java 泛型举例
1 package com.bytezero.genericity;
2
3 import org.junit.Test;
4
5 import java.util.*;
6
7 /**
8 * @author Bytezero1·zhenglei! Email:420498246@qq.com
9 * create 2021-11-22 11:47
10 * 泛型的使用
11 * 1.jdk5.0新特性
12 *
13 * 2.在集合中使用泛型:
14 * 总结:
15 * 1.集合接口或集合类在jdk5.0时都修改为带泛型的结构
16 * 2.在实例化集合类时,可以指明具体的泛型类型
17 * 3.指明完以后,在集合类或接口中凡是定义类或接口时,内部结构(比如:方法 构造器 属性等..)使用到类的泛型位置,
18 * 都指定为实例化的泛型类型 比如 :add(E e) -->实例化以后:add(Integer e)
19 * 4.注意点:泛型的类型必须是类,不能是基本数据类型,需要用到基本数据类型的位置,拿包装类来替换
20 * 5.如果实例化时,没有指明泛型的类型,默认类型为 java.lang.Object类型
21 */
22 public class genericityTest {
23
24 //在集合中使用泛型之前的情况
25 @Test
26 public void test1(){
27 ArrayList list = new ArrayList();
28
29 //需求:存放学生的成绩
30 list.add(18);
31 list.add(28);
32 list.add(38);
33 list.add(48);
34 list.add(58);
35
36 //问题一:类型不安全
37 // list.add("Tom"); //类型错误
38
39 for(Object score : list){
40
41 //问题二 强转时 ,可能出现ClassCastException
42 int stuScore = (Integer) score;
43
44 System.out.println(stuScore);
45
46 }
47
48
49
50
51 }
52
53
54 //在集合中使用泛型的情况
55 @Test
56 public void test02(){
57 ArrayList<Integer> list = new ArrayList<Integer>();
58
59 list.add(18);
60 list.add(18);
61 list.add(18);
62 list.add(18);
63 list.add(18);
64 list.add(18);
65
66 //编译时 就会进行类型数据检查 保证数据的安全
67 // list.add("Tom");
68
69 //方式一:
70 // for(Integer score : list){
71 // //避免了强转的操作
72 // int stuScore = score;
73 //
74 // System.out.println(stuScore);
75
76 //方式二
77 Iterator<Integer> iterator = list.iterator();
78 while (iterator.hasNext()){
79 int stuScore = iterator.next();
80 System.out.println(stuScore);
81 }
82 }
83 //在集合中使用泛型的情况,以HashMap为例
84 @Test
85 public void test3(){
86 Map<String,Integer> map = new HashMap<String, Integer>() ;
87
88 map.put("Tom",89);
89 map.put("jer",59);
90 map.put("jon",29);
91 map.put("andi",99);
92
93 // map.put(123,"asf");
94 //泛型嵌套
95 Set<Map.Entry<String,Integer>>entry = map.entrySet();
96 Iterator<Map.Entry<String,Integer>> iterator = entry.iterator();
97
98 while (iterator.hasNext()){
99 Map.Entry<String, Integer> entry1 = iterator.next();
100 String key = entry1.getKey();
101 Integer value = entry1.getValue();
102 System.out.println(key + "-----" + value);
103 }
104
105 }
106
107
108
109
110 }
Java 泛型举例的更多相关文章
- java基础-泛型举例详解
泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...
- 初识Java泛型以及桥接方法
泛型的由来 在编写程序时,可能会有这样的需求:容器类,比如java中常见的list等.为了使容器可以保存多种类型的数据,需要编写多种容器类,每一个容器类中规定好了可以操作的数据类型.此时可能会有Int ...
- Java泛型-内部原理: 类型擦除以及类型擦除带来的问题
一:Java泛型的实现方法:类型擦除 大家都知道,Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除.Java的泛型基本上都是在编译 ...
- java泛型 8 泛型的内部原理:类型擦除以及类型擦除带来的问题
参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...
- Java泛型type体系
最近看开源代码,看到里面很多Java泛型,并且通过反射去获取泛型信息.如果说要看懂泛型代码,那还是比较容易,但是如果要自己利用泛型写成漂亮巧妙的框架,那必须对泛型有足够的了解.所以这两三天就不在不断地 ...
- java泛型应用实例 - 自定义泛型类,方法
近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ...
- Java——泛型
前言 一般的类和方法,使用的都是具体的类型:基本类型或者自定义的类.如果我们要编写出适用于多种类型的通用代码,那么肯定就不能使用具体的类型.前面我们介绍过多态,多态算是一种泛化机制,但是也会拘泥于继承 ...
- 如何正确使用Java泛型
前言 Java 1.5之前是没有泛型的,以前从集合中读取每个对象都必须先进行转换,如果不小心存入集合中对象类型是错的,运行过程中转换处理会报错.有了泛型之后编译器会自动帮助转换,使程序更加安全,但是要 ...
- java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- Java 泛型优点之编译时类型检查
Java 泛型优点之编译时类型检查 使用泛型代码要比非泛型代码更有优势,下面是 Java 官方教程对泛型其中一个优点的介绍: "Stronger type checks at compile ...
随机推荐
- vue结合elementUI折叠展开效果动画
组件 <template> <div class="hide-page-com"> <ul class="tab-tilte"&g ...
- 【K哥爬虫普法】字节前高管,离职后入侵今日头条数据库,是阴谋、还是利诱?
案情介绍 2016年至2017年间,张洪禹.宋某.侯明强作为被告单位上海晟品网络科技有限公司主管人员,在上海市共谋采用技术手段抓取北京字节跳动网络技术有限公司(办公地点位于本市海淀区北三环西路43号中 ...
- Harbor系统文章01---Linux安装Harbor
1.切换到指定目录下载harbor安装包 wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v ...
- iphone(ios)不同设备的内存和游戏不闪退峰值
ios内存限制 不同内存的苹果机型上(1G,2G,3G,4G-),游戏内存的峰值一般最高多少能保证不闪退? 一般来讲最保险的就是不超过机器总内存的50%,具体每个机型的内存限制在列出在下面. 原贴:& ...
- LyScriptTools 调试控制类API接口手册
LyScriptTools模块中的DebugControl类主要负责控制x64dbg调试器的行为,例如获取或设置寄存器组,执行单步命令等,此类内的方法也是最常用的. 插件地址:https://gith ...
- Python 实现 WebSocket 通信
WebSocket 协议主要用于解决Web前端与后台数据交互问题,在WebSocket技术没有被定义之前,前台与后端通信需要使用轮询的方式实现,WebSocket则是通过握手机制让客户端与服务端建立全 ...
- git操作 手写稿
- 基于Python的用户登录和密码强度等级测试|Python小应用
前言 那么这里博主先安利一些干货满满的专栏了! 这两个都是博主在学习Linux操作系统过程中的记录,希望对大家的学习有帮助! 操作系统Operating Syshttps://blog.csdn.ne ...
- JuiceFS 在大搜车数据平台的实践
大搜车已经搭建起比较完整的汽车产业互联网协同生态.在这一生态中,不仅涵盖了大搜车已经数字化的全国 90% 中大型二手车商.9000+ 家 4S 店和 70000+ 家新车二网,还包括大搜车旗下车易拍. ...
- Delphi dbgrideh颜色设置
DBGridEh中分行分列.单元格的颜色设置(1)分行不同颜色设置:在DBGridEh1DrawColumnCell中写: if ADOQuery1.RecNo mod 2=0 then begin ...