Please enable JavaScript.
Coggle requires JavaScript to display documents.
Day03泛型 - Coggle Diagram
Day03泛型
泛型的使用
泛型类
把泛型定义到类上,就是泛型类
class 类名 <泛型类型1,.......>
注意事项
1.创建对象时,前后尖括号都写类型的是JDK1.5的标准写法
JDK1.7之后后面的尖括号可以不写类型
2.如果我们定义了泛型但是使用的时候没有传入具体类型,默认是object类
3.定义习惯,T、E、K、V为名称
4.不要给一个类定义超过两个泛型,不是语法不允许,而是习惯问题
5.在类上定义的泛型作用于仅仅限于类的内部
6.参数化类型必须是引用类型(int之类的基本数据类型不可以传入)
泛型接口
把泛型定义在接口上(各种使用特点基本上和泛型类是一样的)
格式: interface 接口名<泛型类型1…>
泛型方法
把泛型定义在方法上 (使用了泛型的方法并不是泛型方法, 定义的泛型方法才是泛型方法)
格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
泛型的概述
概念:泛型就是参数化类型,在定义时定义成参数形式,使用的时候传入具体数据类型
好处:
提高了程序的安全性
将运行时期的问题转移到了编译期
省去了类型强转的麻烦
泛型的通配(了解)
泛型通配符
① 泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的Java类了
② ? extends E
向下限定,E及其子类
③ ? super E
向上限定,E及其父类
泛型擦除
通过.class文件的反编译可以看出来,泛型在编译后并没有保留在class文件中,而是变成了强转,所以才说Java的泛型是伪泛型