现在有一个新的需求,没有String类型成绩了,但是成绩依然可能是整数,也可能是小数,这是我们不希望用户将泛型指定为除数字类型外的其他类型,我们就需要使用到泛型的上界定义:
上界👇只能使用其本身或子类
继承自Number类的就符合要求👇
报错👇
也可以创建对象这样设置,上界必须是Integer👇
下界👇
下界不能使用在泛型方法中,在这用👇
这里是隐式类型转换为Object👇
不能使用其子类👇下界只能用他的父类或他本身
Number为上界👇👇👇
快速获取类型var👇
上界Number获取的是Number👇
强转子类Integer👇
同理Integer为上界👇👇👇
本质上还是 ?extends Number, 不能确定是Number的类及其哪个子类,这样子去setValue,无法确定是否是这个类型,虽然他确实是Integer👇👇
大概就是无法确定是否能够接受,例如父类无法接受子类。
限定下界就没有上述的问题👆👇👇👇下界的话