Java泛型总结

为什么会有泛型?泛型是用来干什么的?

泛型其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

类型的参数化,我们学过java中的方法,在java的方法中,我们可以定义一个形参,让后在调用方法时给他传入一个实参。泛型就是让类型像参数那样传递。

如果没有泛型的话,这些容器在设计的时候只能默认设计成装Object类型对象。因为Java里Object是根类。代码如下:

但是这样设计的话会出现两个问题:

1、可能编译时会通过,但是运行时会异常。出现ClassCastException异常。

2、类型的转换,进行装箱与拆箱,消耗性能。

用泛型改良后:

这样设计的容器在使用时编译器就可以帮忙做很大一部分的类型安全检查工作了,这就避免了很多运行时的ClassCastException异常,程序员也无需记住各种对象的类型和担心类型匹配问题了。同时大部分情况下也不用做类型强制转换工作了。

类型通配符

当声明方法时,某个参数的类型是一个泛型类或泛型接口类型,但是在声明方法时,又不确定该泛型实际类型,就可用类型通配符。

showAnimal方法使用的就是类型通配符。Animal、Cat、MineCat都可以作为其传入的参数。

类型通配符上限extends

泛型上限通配符,传递的集合类型,只能是Cat或者Cat的子类类型

当传入的不是Cat或者Cat的子类时,就会报错。

限制:限制传入的类型,避免出错

编译时不确定添加的类型是否符合要求

类型通配符下限super

要求该泛型的类型,只能是实参类型,或实参类型的父类类型。

换成super后,当传入的不是Cat或者Cat的父类时,就会报错。

为什么super叫下限?因为要从指定的参数类型往上看;

extends为何叫下限?因为要从指定的参数类型往下看;

集合比较器为何要用super?因为确定了所有类型不可能超过已经规定的类型,保证安全地比较。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

XSS9

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

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

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

打赏作者

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

抵扣说明:

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

余额充值