泛型:
1.存储数据的时候 可以帮我们进行自动的类型检查
2.获取元素的时候,可以帮我们进行类型转换
获取数据时,不需要强转类型转换。
类型形参一般使用一个大写字母表示,常用的名称有:
E
表示
Element
K
表示
Key
V
表示
Value
N
表示
Number
T
表示
Type
S, U, V
等等
-
第二、第三、第四个类型
java怎么编译的?
使用擦除机制。
运行时没有泛型概念,编译后,泛型类型擦除为Object类型。
泛型上界
下面这个为什么会报错
E是引用类型,不能通过大于号比较。
需要实现一个函数,但是此时没有比较函数,因为此时array[i]从原先的E类型变成了Object类型,Object没有实现compare接口。所以需要边界,限制擦除。
下面定义String类型会报错,是因为String不是Number的子类。
下面想实现一个泛型方法,发现E会报错,因为此时E没有意义。
下面这样弄就好了。
像下面这样调用。
也可以省略类型,此时类型跟随参数类型。
把函数设为静态后,就可以不定义对象调用了。