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 泛型举例的更多相关文章

  1. java基础-泛型举例详解

    泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...

  2. 初识Java泛型以及桥接方法

    泛型的由来 在编写程序时,可能会有这样的需求:容器类,比如java中常见的list等.为了使容器可以保存多种类型的数据,需要编写多种容器类,每一个容器类中规定好了可以操作的数据类型.此时可能会有Int ...

  3. Java泛型-内部原理: 类型擦除以及类型擦除带来的问题

    一:Java泛型的实现方法:类型擦除 大家都知道,Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除.Java的泛型基本上都是在编译 ...

  4. java泛型 8 泛型的内部原理:类型擦除以及类型擦除带来的问题

    参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...

  5. Java泛型type体系

    最近看开源代码,看到里面很多Java泛型,并且通过反射去获取泛型信息.如果说要看懂泛型代码,那还是比较容易,但是如果要自己利用泛型写成漂亮巧妙的框架,那必须对泛型有足够的了解.所以这两三天就不在不断地 ...

  6. java泛型应用实例 - 自定义泛型类,方法

    近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ...

  7. Java——泛型

    前言 一般的类和方法,使用的都是具体的类型:基本类型或者自定义的类.如果我们要编写出适用于多种类型的通用代码,那么肯定就不能使用具体的类型.前面我们介绍过多态,多态算是一种泛化机制,但是也会拘泥于继承 ...

  8. 如何正确使用Java泛型

    前言 Java 1.5之前是没有泛型的,以前从集合中读取每个对象都必须先进行转换,如果不小心存入集合中对象类型是错的,运行过程中转换处理会报错.有了泛型之后编译器会自动帮助转换,使程序更加安全,但是要 ...

  9. java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  10. Java 泛型优点之编译时类型检查

    Java 泛型优点之编译时类型检查 使用泛型代码要比非泛型代码更有优势,下面是 Java 官方教程对泛型其中一个优点的介绍: "Stronger type checks at compile ...

随机推荐

  1. TypeScript类的修饰符 public private protected的详细讲解

    简单介绍一下public private protected public:当一个类的成员变量没有修饰的时候,默认的就是 public 进行修饰.外部是可以进行访问的. private属性只能够在父类 ...

  2. bug的分类

    bug的分类 语法上的问题: 在循环的时候, 1.一定要注意这个循环的对象是否是空对象:空对象就不需要进行循环了, 判断一下,空对象就不需要进行循环了: 2.在XXX.a属性的时候,要注意这个对象是否 ...

  3. .netcore项目发布到IIS全流程

    一.环境准备 保证电脑上有.net core runtime下载地址:https://dotnet.microsoft.com/download/dotnet-core/current/runtime ...

  4. protojson简介

    google.golang.org/protobuf/encoding/protojson 是 Go 语言中的一个库,用于处理 Protocol Buffers(protobuf)和 JSON 之间的 ...

  5. 微信小程序-页面跳转Tabbar

    官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html#tabBar 首先我们 ...

  6. Python 检测PE所启用保护方式

    Python 通过pywin32模块调用WindowsAPI接口,实现对特定进程加载模块的枚举输出并检测该PE程序模块所启用的保护方式,此处枚举输出的是当前正在运行进程所加载模块的DLL模块信息,需要 ...

  7. MVC和WebAPI如何从Filter向Action中传递数据

    http://www.itfanr.cc/2016/04/17/transfer-data-from-filter-to-action/ MVC和WebAPI如何从Filter向Action中传递数据 ...

  8. 微服务保护-Sentinel

    1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务. 如图,如果服务提供者I发生了故障,当前的应用的部分业 ...

  9. 苹果iOS的应用移除主屏幕及恢复找回

    昨天刷到一个苹果iOS系统更换微信图标的,然后就添加了一个,发现那个记录通知数字问题,想恢复回来,所以就有了此文. https://www.cnblogs.com/lzhdim/p/17909867. ...

  10. 【动态内存】C语言动态内存使用常见错误及其避免方法(初学者避雷)

    C语言动态内存使用常见错误及其避免方法(初学者动态内存避雷手册) 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要 ...