CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿

java泛型的日常应用有:泛型类、泛型普通方法、泛型静态方法、泛型接口、泛型擦除模式、泛型通配符、泛型上下边界。本篇详细讲解java泛型的应用,看不懂来找我。

1.泛型类

泛型类型用于类的定义中,被称为泛型类。最典型应用的就是各种容器类,如:List、Set、Map等。

泛型类的基本写法:

图片[1]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

一个普通的泛型类(案例中泛型属性可以正常生成get set方法):

图片[2]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

(main方法测试前,请先生成属性对应的get set方法)

图片[3]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

演示效果(部分展示)

图片[4]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

2. 泛型普通方法

泛型在定义普通泛型方法的时候,可以使用泛型类定义的泛型类型(本案例),也可以在普通方法中定义这个方法自己需要的特定泛型类型(参照下面的泛型静态方法定义自定义泛型方法中使用到的泛型类型)

图片[5]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

main方法测试代码:

图片[6]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿控制台
图片[7]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

3. 泛型静态方法

泛型静态方法中必须要声明本个方法中使用的泛型类型(),泛型类和泛型静态方法没有任何关系,泛型类是针对对象的,泛型静态方法针对于是整个类,所以为了避免混淆,建议泛型类声明的泛型类型(T)和泛型静态方法中声明的泛型类型(W)使用不同的字符来表示。

以下是无返回值的泛型静态方法:

图片[8]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

main方法测试:

图片[9]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

有返回值泛型静态方法:

图片[10]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

main方法测试:

图片[11]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

控制台运行效果:

图片[12]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

4.泛型接口

泛型接口与泛型类的定义及使用基本相同。

泛型接口的实现类,可以指定具体的泛型接口的具体泛型的类型。

泛型接口

图片[13]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿
图片[14]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

泛型接口实现类(实现泛型接口中的泛型类型)

图片[15]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

main方法测试:

图片[16]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

控制台演示效果:

图片[17]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

泛型接口的实现,如果没有指定具体的泛型类型,必须要在这个实现类中声明一个泛型类型占位符给接口用。

泛型接口实现类(没有实现泛型接口中的泛型类型)

图片[18]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

main方法测试:

图片[19]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

控制台效果:

图片[20]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

5.泛型的擦除模式

Java中的泛型实际是伪泛型,在代码编译期间有泛型做限制,但在代码运行期间,会将所有的泛型全部擦除掉。所以无论使用什么样不同类型的泛型,结果其class对象都是一致的。

图片[21]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

使用不同类型的泛型,比较其class文件,发现是相等的,证明泛型在运行期间被擦除

图片[22]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

运行结果:

图片[23]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

为什么要使用擦除模式?

为了兼容JDK老版本的编码。

6.泛型通配符

Java中的继承并不是泛型中的继承。也就是说Java中的父子关系,在泛型中并不是父子关系。

图片[24]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

针对于上面的show方法进行以下测试,分别定义两个不同类型泛型的类型

分别调用show方法,我们会发现p.show(p)正常执行,但是p.show(p1)无法执行,编译报错,由此证明Java中Number是Integer的父类,但是在泛型中,泛型并不知道Number是Integer的父类

图片[25]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

通配符:由于java中的继承关系,在泛型中不做任何声明修饰的情况下,是不被认可的,所以要使用通配符进行处理。接下来会使用通配符在泛型中将java中的继承关系重新绑定。

通配符一般使用?来表示,可以理解为?在泛型中所有类的父类。

图片[26]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

使用通配符后代码正常编译执行:

图片[27]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

演示效果:

图片[28]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

7.泛型上下边界

上面在泛型中的继承问题,通过使用通配符就可以很好的解决掉,但是我们会发现如果只使用通配符这个泛型的绑定没有任何意义,因为使用通配符就意味着所有的类型都可以注入进来,所以为了解决这个问题,泛型引入了上边界和下边界。

(上边界)Extends和(下边界)super关键字

上边界的使用:

在读取T这个类型数据的时候,但不写入数据的时候,使用上边界

图片[29]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

测试代码:

图片[30]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

效果演示:

图片[31]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

下边界的使用:

需要写入数据的时候,但不需要读取的时候

图片[32]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

测试代码:

图片[33]-纯干货!亲手整理java泛型日常应用笔记,刷到是你运气好-免费源码丞旭猿-丞旭猿

看完这些,你学会了吗?

举报/反馈

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容