Java泛型学习

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>




你可能感兴趣的:(java,object,通配符,编译器)