Java基础_泛型

章节地址
Java基础_枚举类和注解https://blog.csdn.net/weixin_46349544/article/details/122450137
Java基础_泛型https://blog.csdn.net/weixin_46349544/article/details/122489562
Java基础_Lambda表达式https://blog.csdn.net/weixin_46349544/article/details/123122401
Java基础_函数式接口https://blog.csdn.net/weixin_46349544/article/details/123123017
Java基础_Streamhttps://blog.csdn.net/weixin_46349544/article/details/123382892
Java基础_多线程https://blog.csdn.net/weixin_46349544/article/details/123162259
Java基础_Java比较器https://blog.csdn.net/weixin_46349544/article/details/123236205

F 泛型

F. 1 泛型概述

F.1.1 什么是泛型

所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。

泛型的类型不能是基本数据类型,用包装类代替
如果实例化时,没有指明泛型的类型。默认类型为java.lang.object类型。

F.1.2 为什么要有泛型

在这里插入图片描述

案例1:不使用泛型

在这里插入图片描述
在这里插入图片描述

案例2:使用泛型

在这里插入图片描述
在这里插入图片描述
Iterator源码:
在这里插入图片描述

案例3: Map的泛型

在这里插入图片描述

Map源码:
在这里插入图片描述
map的put方法使用类定义的泛型
在这里插入图片描述
Entry的使用情况:
在这里插入图片描述
因为Entry接口定义在Map接口内部,所以在使用时的导包有两种情况
情况1: Map.Entry
导包
在这里插入图片描述
使用
在这里插入图片描述
情况2:Entry
导包
在这里插入图片描述
使用
在这里插入图片描述

F.2 自定义泛型类

可以参考Map源码

新建一个类:
在这里插入图片描述

子类继承泛型类

情况一

在这里插入图片描述

由于子类在继承带泛型的父类时,指明了泛型类型。则实例化子类对象时,不再需要指明泛型。
在这里插入图片描述

情况二

在这里插入图片描述
在这里插入图片描述

参考ArrayList源码
在这里插入图片描述

F.3 总结在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
9.类的泛型是实例化的时候指定的,而static要早于对象的创建,所以静态方法中不能使用类的泛型
在这里插入图片描述
10
在这里插入图片描述
11
在这里插入图片描述
12
在这里插入图片描述
在这里插入图片描述

F.4 自定义泛型方法

在这里插入图片描述

参考Collection源码:
在这里插入图片描述
toArray就是泛型方法
Collection泛型为E
toArray定义了T
方法所属的类或者接口是否带泛型无所谓
在这里插入图片描述
自定义一个泛型方法
在这里插入图片描述

在这里插入图片描述

F.5 泛型在继承方面的体现

在这里插入图片描述

F.6 通配符(?)的使用

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

有限制条件的通配符的使用

新建类
在这里插入图片描述
extends可以看做<=
super可以看做>=
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值