1.泛型的提出
:是一种把类型明确的工作推迟到创建对或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。
2.泛型的优点
(1): 把运行时期的问题提前到了编译期间
(2): 避免了强制类型转换
(3):优化了程序设计,解决了黄色警告线
注意:泛型只在编译期有效 但在运行期就擦除了
3.泛型引用时的常见错误:
class Animal {}
class Dog extends Animal{}
class Cat extends Animal{}
class GenericDemo {
public static void main(String[] args) {
Collection<Animal> c2 = new ArrayList<Dog>();
Collection<Animal> c3 = new ArrayList<Cat>();
Collection<? extends Animal> c4 = new ArrayList<Object>();
Collection<? super Animal> c10 = new ArrayList<Dog>();
Collection<? super Animal> c11 = new ArrayList<Cat>();
}
}
(1)泛型时若等号左边给定了格式,等号右边必须保持一致或不写
(2)若等号左边为<? extends X>时,等号右边必须是X的子类或其本身
(3)若等号左边为<? extends X>时,等号右边必须是X的父类或其本身
(4)只有当等号左边为<?>时,格式才能变化,但当调用的时候只能返回Object类型的数据,也就是必须向下转型才能使用