泛型
泛型是jdk5引入的特性,可以在编译阶段约束操作的数据类型,并进行检查
泛型格式: <数据类型>
注意: 泛型只支持引用数据类型
指定泛型的具体类型后,传递数据时,可以传入该类类型或其子类类型
如果不写泛型,那会默认为Object
好处: 统一了数据类型
将运行时的问题提前到了编译期间,避免了强制类型转换可能是出现的异常, 因为在编译阶段类型就能确定下来
java中的泛型是伪泛型,只在编译期间有效
泛型类 :当一个类中,某个变量的数据类型不确定的时候,就可以使用泛型类
修饰符 class 类名<E>{}
当创建该对象的时候,就可以传入参数,确定类型
泛型方法 :当一个方法中,某个变量的类型不确定的时候,就可以使用泛型方法
修饰符<E> 返回值类型 方法名(E e){}
泛型接口 : ...
修饰符 interface 接口名<E e>{}
泛型的继承
泛型不具备继承性,但是数据具备继承性
就是说,没有泛型多态,子类不能传入参数.
但是这个泛型类创建出来的数据,可以添加操作子类对象实现多态
泛型的通配
? :表示不确定类型
但是可以堆类型进行限定
? extends E: 表示可以传递E或E所有的子类类型
? super E: 表示可以传递E或E所有的父类类型
例 public static void method(ArrayList<? super Fu list>){}
应用场景: 如果在类,方法,接口定义时,类型不确定,可以定义泛型类
如果指定以后只能传递某个继承体系中的,就可以使用泛型的通配符