泛型Generic:为了运行时期不出现类型异常。可以在定义容器时,规定对象类型。是应用在编译时期的一项安全机制。
1、擦除:生成.class文件时,把泛型去掉了。
2、泛型类:在类定义时就明确参数,由该类的使用者来传递具体的类型。
class Util<E> {
private E e;
}
3、泛型方法:
public <Q> void print(Q q) {
}
*static方法无法访问类上定义的泛型。如果静态方法需要定义泛型,泛型只能定义在方法上。
4、泛型接口:
interface Inter<T> {
}
5、通配符<?>:取出的对象类型为Object类型。
**Collection<Object> coll = new ArrayList<String>();//左右泛型类型不一致,报错
6、限定:<? extends E>接收E或E子类型(泛型上限),取出的对象类型为E
<? super E>接收E或E父类(泛型下限)