JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进。引自:http://www.ibm.com/developerworks/cn/java/j-jtp01255.html
也就是说,凡是用到Object强制类型转换的地方,可以换用泛型机制;凡是可以使用泛型机制的地方,可以换用Object强制类型转换。
Java 语言中的泛型基本上完全在编译器中实现,由编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码。引自:http://www.ibm.com/developerworks/cn/java/j-jtp01255.html
数组是协变的,泛型是非协变的。
对于数组而言,协变,即Integer是Number,Integer[]也是Number[]。读操作没问题,写操作存在严重的安全隐患。
对于泛型而言,非协变,即Integer和Number一毛钱关系都没有,在泛型机制中,读写操作都是安全的。
数组能够协变而泛型不能协变的另一个后果是,不能实例化泛型类型的数组(new List<String>[3]
是不合法的),除非类型参数是一个未绑定的通配符(new List<?>[3]
是合法的)。引自:http://www.ibm.com/developerworks/cn/java/j-jtp01255.html
tips:数组与泛型的结合,一定要小心。
泛型在Java中的应用
关键字:<,>,?,<T>,<T,V>,<T extends >,<T super >
类定义:
public class<T,V>{
}
方法定义:
public <T> method(){
}
类引用:
List<T>