标签:
public class Pair<T>{...}
public static <T> T getMiddle(T[] a){...}
public static <M> M,<V> V myCompate(M am,V av){...}
public static <T extends Comparable & Serializable> getMiddle(T[] a)
增加限定符,之间用&分隔;可以有多个接口,如果有类继承关系,只能有一个,并且必须放在首位
虚拟机中的对象全部是普通的类对象,没有泛型对象。
泛型对象首先要进行类型擦除生成原始类型,原始类型的名字就是删去类型参数后的泛型类型名。
public class Pair{...}
public static Object getMiddle(Object[] a){...}
public static Object myCompate(Object am,Object av){...}
public static <Comparable > getMiddle(Comparable[] a)
程序使用泛型的时候,会强制进行类型转换,转换为实例化类型,再进行处理。
例如double inst[];getMiddle(inst),会先将Object[]转换为Double[]。
1、不能用基本类型实例化类型参数
2、运行时类型查询只返回原始类型
instanceof、强制类型转换、getClass()...
3、不能抛出也不能捕获泛型类型的实例
4、参数化类型的数组不合法
Pair<String>[] table = new Pare<Sting>[10];//ERROR
5、不能实例化类型变量
6、泛型类的静态上下文中类型变量无效
参考文献
《java核心技术 卷1:基础知识》
标签:
原文地址:http://www.cnblogs.com/mingziday/p/4979601.html