泛型(泛型类、接口及方法)——学习推荐版,通俗易懂讲解

泛型定义及分类

image-20231204125520991

1.泛型类

image-20231204130858726

类型变量其实就是一个标识符,一般用大写字母表示,如K,T,E,V,当然也可以多个字母或数字的组合,只要满足标识符的定义规则就都可以

形式1

image-20231204125936270

若写成MyArrayList<> list = new MyArrayList();那么对应public class MyArrayList<E>中的E类型就是Object类型

形式2

image-20231204130433817

形式3

image-20231204130719258


2.泛型接口

image-20231204131153753

形式1

image-20231204131313675

其他形式类型于自定义泛型类的形式2、形式3


3.泛型方法(其实就是方法的参数定义泛型

其实就是在方法的参数前面定义泛型标识符,只不过这个标识符写在方法的返回值类型前面罢了,所以叫泛型方法。

image-20231204131742153

形式1

image-20231204131829790

image-20231204132327128


分析下面这个问题

image-20231204132622251

这里的话就是贴了一个标签,标签为Car,只能是ArrayList<Car>类型

image-20231204132710758

如果定义成上图这样,虽可以传值,但不能保证是Car的子类,见下图

image-20231204132756193


最终解决方法

image-20231204132829159

简化形式(推荐)

image-20231204133350777

小知识

  1. ?是通配符,可以直接拿来使用,表示接收一切类型,不需T哪种自定义表示符,还需定义。

  2. A extends B:表示类型A必须为类型B或者为类型B的子类。

  3. A super B:表示类型A必须为类型B或者为类型B的父类


注意事项

image-20231204134245635


示例1:

image-20231204133933989

而且会将所约束的泛型进行强制类型转换,如上图的String rs = (String) list .get(2);

示例2:

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫青.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值