泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的类型,参数化类型,把类型当做参数一样传递。
格式:
<数据类型>
此处的数据类型只能是引用
好处:
A:把运行的时期的问题提前到了编译期间
B:避免强制类型转换
C:优化了程序设计,解决了黄色警告线
泛型类
把泛型定义在类上
格式:public class 类名<泛型类型1,....>
注意:泛型类型必须是引用类型
泛型方法
把泛型定义在方法上
格式:public <泛型类型> 返回类型 方法名<泛型类型>
泛型接口
把泛型定义在接口上
格式:public interface 接口名 <泛型类型1,........>
实现类在实现接口的时候
第一种情况:已经知道是什么类型的了
第二种情况:还不知道是什么类型的
泛型高级(通配符)
泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的java类了。
? extends E
向下限定,E及其子类
? super E
向上限定,E及其父类
泛型写的时候前后必须 一致