泛型总结:
1. 泛型具有参数化类型的能力. 可以定义使用泛型类型的类或方法, 编译器会用具体类型来替换泛型类型.
2. 泛型的主要优势是能够在编译时而不是运行时检测错误.
3. 泛型类或方法允许指定这类或方法可以带有的对象类型, 如果试图使用带有不兼容对象的类或方法, 编译器或检测出这个错误.
4. 定义在类, 接口或者静态方法中的泛型称为形式反省类型, 随后可以用一个实际具体类型来替换它. 替换泛型类型的过程称为泛型实例化.
5. 不使用类型参数的泛型类称为原始类型, 例如ArrayList. 使用原始类型是为了向后兼容Java 较早的版本.
6. 荣配泛型类型有三种形式: ? , ? extends T , ? super T, 这里的T代表一个泛型类型.
1) 第一种形式, ? 称为非受限通配, 它和 ? extends Object 是一样的.
2) 第二种形式 ? extends T 称为受限通配, 代表T或者T的一个子类型.
3) 第三种形式 ? super T 称为下限通配, 表示T或者T的一个父类型.
7. 使用称为类型消除的方法来实现泛型. 编译器使用泛型类性信息来编译代码, 但是随后消除它.
因此泛型信息在运行时是不可用的. 这个方法能够使泛型代码向后兼容使用原始类型的遗留代码.
8. 不能使用泛型类型参数来创建对象.
9. 不能使用泛型类型参数来创建数组.
10. 不能再静态环境中使用累得泛型类型参数
11. 在异常类中不能使用泛型类型参数.