清华学霸首次分享!Java泛型全解宝典限时领取
文章图片
java泛型理解
泛型在java中经常使用 , 有很重要的作用 , 在做软件构造的实验 , 我对泛型的理解不是很深 , 但随着了解和运用越来越多 , 理解也就加深了 , 这里记录一下学习的理解
什么是泛型?
泛型 , 即“参数化类型” , 是对java语言的类型系统的一种扩展 , 以支持创建可以按类型进行参数化的类 , 可以把类型参数看作是使用参数化类型时指定的类型的一个占位符 , 就像方法的形式参数是运行时传递的值的占位符一样 , 泛型的本质是为了参数化类型 , 在不创建新的类型的情况下 , 通过泛型指定的不同类型来控制形参具体限制的类型 , 在泛型使用过程中 , 操作的数据类型被指定为一个参数 , 这种参数类型可以用在类、接口和方法中 , 分别被称为泛型类、泛型接口、泛型方法 。
对于常见的泛型模式 , 推荐的泛型类型变量有:
E:元素(element) , 多用于java集合框架
K:关键字(Key)
N:数字(Number)
T:类型(Type)
V:值(value)
T和T的区别:T是tpye的首字母缩写;T表示“返回值”是一个泛型 , 传入什么类型 , 就返回什么类型 , 而单独的“T"表示限制传入的参数类型
举个例子说明泛型的作用
文章图片
运行程序 , 崩溃
java.lang.ClassCastException:java.lang.Integercannotbecasttojava.lang.String
原因是ArrayList可以存放任意类型 , 例子中添加了一个String类型 , 添加了一个Integer类型 , 再使用时都以String的方式使用 , 因此程序崩溃了 。 为了解决类似这样的问题(在编译阶段就可以解决) , 泛型应运而生 。
我们将第一行声明初始化list的代码更改一下 , 编译器会在编译阶段就能够帮我们发现类似这样的问题 。
文章图片
泛型的特性
泛型只在编译阶段有效 。 看下面的代码:
文章图片
输出结果:D/泛型测试:类型相同 。
通过上面的例子可以证明 , 在编译之后程序会采取去泛型化的措施 。 也就是说Java中的泛型 , 只在编译阶段有效 。 在编译过程中 , 正确检验泛型结果后 , 会将泛型的相关信息擦出 , 并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法 。 也就是说 , 泛型信息不会进入到运行时阶段 。
对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型 , 实际上都是相同的基本类型 。
泛型如何使用
泛型有三种使用方式 , 分别为:泛型类 , 泛型接口 , 泛型方法
1.泛型类
泛型类型用于类的定义中 , 最典型的是各种容器类 , 如:List , Set , Map
【清华学霸首次分享!Java泛型全解宝典限时领取】泛型的基本写法:
文章图片
举个例子:
文章图片
那如何使用呢
文章图片
结果:
文章图片
2.泛型接口
泛型接口与泛型类的定义及使用基本相同 。 泛型接口常被用在各种类的生产器中 , 可以看一个例子:
- 芯片|高通再见,iPhone将全部采用自研发芯片:2023年首次实现
- 华为|业界首次:中国联通携手华为 5G 超级上行实现“跨站”规模商用
- 人脸识别|3位清华学霸,手握1400多科研人员,3年烧钱142.5亿,却没挣到钱
- 小米科技|曲面屏+无线充电,小米10S首次降至1909元,网友:真香!
- iPhone屏下Face ID/Touch ID爆料汇总:最早在2023年首次发布
- 攫取大众目光!商用清洁机器人“CC1”首次海外亮相CES展会
- 360刷新人工智能“世界最强”榜单,中国数字安全企业首次登顶
- |天文学家首次目睹恒星爆炸的“狂暴模样”
- “加捻”是把原料丝绕成线的过程|清华大学杨忠强课题组开发液晶弹性体加捻纤维,首次用于构筑旋转微引擎
- 1月12日|电子科技大学首次在高温超导体中发现玻色子奇异金属