泛型
泛型
优点:
- 避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型
- 把运行时异常提升到了编译时异常
缺点:
- 只能存储一种数据类型
自定义泛型
自定义含有泛型的类:类名<E>
自定义含有泛型的接口:接口名<I>
泛型接口的实现类重写方法指定具体类型时:接口需要指定数据类型
泛型接口的实现类重写方法未指定具体类型时:实现类和接口都需要指定数据类型
自定义含有泛型的方法:
修饰符 <M> 返回值 方法名字(M m){
}
泛型的上限限定
? extends E
使用的泛型只能是 E类型的子类/本身
泛型的下限限定
? super E
使用的泛型只能是E类型的父类/本身
? 代表通配符的意思,不能创建对象的时候使用,只能作为方法的参数使用