泛型
泛型是指参数化类型的能力。可以定义带泛型类型的类或者方法,随后编译器会用具体的类型来代替他。
例如
public inerface Comparable<T>{
public int compareTo(T o)
}
这里的<T>表示形式泛型类型 ,随后可以用一个实际具体类型来替换他。替换泛型具体类型称为泛型实例化。按照惯例,像T、E这样的单个大写字母用于表示一个形式泛型类型。
泛型的好处
主要优点就是能在编译时而不是在运行时检测出错误。泛型类或者方法允许用户指定可以和这些类或者方法一起工作的对象类型。如果试图使用一个不相容的对象,编译器就会直接报错。
使用泛型提高了软件的可靠性和可读性。
通配泛型
当遇到类型中子父问题的时候,比如说Integer是Number的子类型,但是GenericStack<Integer>并不是GenericStack<Number>的子类型。(编译器会报错)
可以使用通配泛型类型。通配泛型有三种类型---?(等同于? extends Object)、? extends T(表示T的子类型)或者? super T(表示T的父类型)。