java泛型,你了解java的泛型吗?

1,363 阅读2分钟

泛型

只可以传入 object 类型 基本数据类型不可以

泛指任意的引用数据类型【就是使用的一种未知类型,具体在使用的时候进行确定】

泛型类

定义类

img
img

使用时可以传入任意类型

泛型方法

img
img

以下类推在使用数据类型 或者对象时都可以使用

12 泛型通配符得基本使用

泛型通配符:

泛型通配符作用:如果想让我们得参数可以接收任意类型得泛型,就可以借助泛型通配符实现。

==注意:泛型统配符定义得集合,不支持增删操作,只支持读取操作==

img
img

受限泛型 ?

img
img

限定通配符总是包括自己

上界类型通配符:add 方法受限

下界类型通配符:get 方法受限

如果你想从一个数据类型里获取数据,使用 ? extends 通配符

如果你想把对象写入一个数据结构里,使用 ? super 通配符

如果你既想存,又想取,那就别用通配符

不能同时声明泛型通配符上界和下界

泛型擦除

java 的泛型采用的是伪泛型,会在编译期处理为我们普通的方法和类,所以当我们编写一段带泛型的代码看似指定了类型其实并没有它还是一个 object 类型,处理机制是通过类型擦除,擦除规则:

若泛型类型没有指定具体类型,用 Object 作为原始类型; 若有限定类型< T exnteds XClass >,使用 XClass 作为原始类型; 若有多个限定< T exnteds XClass1 & XClass2 >,使用第一个边界类型 XClass1 作为原始类型;

如果有问题希望大家指出来!