关键词:
noGenericnames useGenericnames list s listlist s listabT abT valuevalueT getValuevaluesetValuevaluename number showshowvalueshowvaluegenericInterface g1 g2 T genercMethodtmainargsgenericString str genericStringi genericStringjavajava
A
java
上面这些泛型类定义中的泛型参数E、K和V都是什么意思呢?
其实这些参数名称是可以任意指定,就想方法的参数名一样可以任意指定,但是我们通常会起一个有意义的名称,让别人一看就知道是什么意思。
常见泛型参数名称有如下:
E:Element (在集合中使用,因为集合中存放的是元素)
T:Type(Java 类)
K:Key(键)
V:Value(值)
N:Number(数值类型)
?:表示不确定的java类型
泛型本质是将数据类型参数化,它通过擦除的方式来实现,即编译器会在编译期间「擦除」泛型语法并相应的做出一些类型转换动作。
看一个例子就应该清楚了,例如:
T num
num T num;
这种情况的泛型类型,num 会被替换为 String 而不再是 Object。
这是一个类型限定的语法,它限定 T 是 String 或者 String 的子类,也就是你构建 Caculate 实例的时候只能限定 T 为 String 或者 String 的子类,所以无论你限定 T 为什么类型,String 都是父类,不会出现类型不匹配的问题,于是可以使用 String 进行类型擦除。
实际上编译器会正常的将使用泛型的地方编译并进行类型擦除,然后返回实例。但是除此之外的是,如果构建泛型实例时使用了泛型语法,那么编译器将标记该实例并关注该实例后续所有方法的调用,每次调用前都进行安全检查,非指定类型的方法都不能调用成功。
实际上编译器不仅关注一个泛型方法的调用,它还会为某些返回值为限定的泛型类型的方法进行强制类型转换,由于类型擦除,返回值为泛型类型的方法都会擦除成 Object 类型,当这些方法被调用后,编译器会额外插入一行 checkcast 指令用于强制类型转换,这一个过程就叫做『泛型翻译』。
七:最后以上我就分别从Java泛型的本质,再到泛型的使用,以及泛型的实现原理等六个方面进行了完整详解,希望对你有所用!
以上!
必看●文章干货
必看●视频干货
关注「mikechen的互联网架构」公众号,回复【架构】,领取我原创的300期+BAT架构技术系列文章与1000+大厂面试题答案合集。
如果你对大厂架构、大厂项目、进阶架构师等感兴趣或者遇到职业发展瓶颈想交流,关注「mikechen的互联网架构」公众号,回复【交流】,即可加我微信,一起交流学习。
「万字图文」史上最姨母级java继承详解(代码片段)
...分享自华为云社区《「万字图文」史上最姨母级Java继承详解丨【奔跑吧!JAVA】》,原文作者:bigsai。课程导学在Java课堂中,所有老师不得不提到面向对象(ObjectO 查看详情
深入java微服务之网关系列4:springcloudgateway详解(史上最全)(代码片段)
1.1 SpringCloudGateway简介SpringCloudGateway是SpringCloud的一个全新项目,该项目是基于Spring5.0,SpringBoot2.0和ProjectReactor等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。SpringCloudGateway作为Sp... 查看详情
史上最全的mavenpom.xml文件教程详解
原文地址:http://blog.csdn.net/yaerfeng/article/details/26448417原创整理不易,转载请注明出处:史上最全的mavenpom.xml文件教程详解代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm<project xmlns& 查看详情
图文详解java泛型,写得太好了!(代码片段)
##泛型——一种可以接收数据类型的数据类型,本文将通俗讲解Java泛型的优点、方法及相关细节。一、泛型的引入我们都知道,继承是面向对象的三大特性之一,比如在我们向集合中添加元素的过程中add()方法里填入... 查看详情
深入java微服务之网关系列3:springcloudalibabagateway详解(史上最全)(代码片段)
九、服务网关:Gateway9.1、网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微... 查看详情
史上最全jenkinspipeline流水线详解
原文链接:https://zhangzhuo.ltd/articles/2022/06/04/1654333399919.html一、什么是流水线jenkins有2种流水线分为声明式流水线与脚本化流水线,脚本化流水线是jenkins旧版本使用的流水线脚本,新版本Jenkins推荐使用声明式流水线... 查看详情
kafka源码分析10:副本状态机replicastatemachine详解(图解+秒懂+史上最全)(代码片段)
文章很长,建议收藏起来,慢慢读!Java高并发发烧友社群:疯狂创客圈奉上以下珍贵的学习资源:免费赠送经典图书:《Java高并发核心编程(卷1)》面试必备+大厂必备+涨薪必备加尼恩免费领免... 查看详情
史上最全web.xml配置文件元素详解
...web.xml配置文件常用元素及其意义预览二、各个配置元素详解1.Web应用图标:指出IDE和GUI工具用来表示Web应用的大图标和小图标2.Web应用名称:提供GUI工具可能会用来标记这个特定的Web应用的一个名称3.Web应用描述:给出于此相关... 查看详情
史上最全面的springboot配置文件详解(代码片段)
SpringBoot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍。SpringBoot配置文件对SpringBoot来说就是入门和基础,经常会用到,所以写下做个总结以便日后查看。1.配置文件当我们构建完SpringBoot项目后,会... 查看详情
史上最全的pom.xml文件详解
史上最全的pom.xml文件详解https://blog.csdn.net/jk418756/article/details/87917776?spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-12-87917776-blog-100622951.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=d... 查看详情
史上最全echarts可视化图表详解(代码片段)
...配置项包括每一个环节比较容易出现的问题来为大家进行详解。•安装echarts图表•使用echarts图表•echarts图表那些你一定会用到的配 查看详情
jmeter之json提取器详解(史上最全)(代码片段)
参考资料:https://www.bbsmax.com/A/D854lmBw5E/Jsonpath在线测试:http://jsonpath.com/实际工作中用到的一些场景:提取某个特定的值提取多个值按条件取值阵列取值(返回所有元素的列表/数组)提取多个值Jsonpath提取器需要另外安装下载plugi... 查看详情
史上最全的maven的pom.xml文件详解(代码片段)
本文转自:https://www.cnblogs.com/hafiz/p/5360195.html原作者:阿豪聊干货<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 查看详情
史上最全的mavenpom.xml文件教程详解
...#xff0c;转载请注明出处:史上最全的mavenpom.xml文件教程详解代码下载地址:http://www.zuidaima.com/share/1781583829978112.htm<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ... 查看详情
springboot第二弹,配置文件详解-史上最全
...布尔,日期对象、Map数组@ConfigurationProperties(prefix="person")详解标注在类上标注在方法上综上所述 @ConfigurationProperties注解能够轻松的让配置文件跟实体类绑定在一起。 值得关注的是:@ConfigurationProperties这个注解仅仅是支... 查看详情
史上最全详解微服务技术栈
一、认识微服务单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。优点:架构简单、部署成本低缺点:耦合度高 分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立... 查看详情
python面试合集史上最全面python面试题和详解(10套)完整版
...可以以文本的形式打开。内容如题,全面的Python面试题和详解,需要的朋友可下载试试!包含:2019Python最新面试题及答案16道题、110道Python面试题(上)、最常见的35个Python面试题及答案(2018版)、整理的最全python常见面试题(... 查看详情
史上最全的go语言模块(module)管理详解(基于go1.19)(代码片段)
目录1.使用gomodules方式管理Go模块2.使用工作区管理Go模块3.设置全局模块名4.在VSCode中使用工作区模式管理Go模块 go语言一直到1.10,都是使用GOPATH设置模块搜索路径,但从1.11开始,引入了新的Go模块管理机制... 查看详情