类型参数和类型变量不是在运行时具体化的。因此,不同的参数化类型是由相同的类或接口在运行时实现的。的确,给定泛型类型声明的所有调用共享同一运行时实现。
 ---- 摘自《Java语言规范第三版》第四章划线部分到底啥意思 ,看不懂求解释!!!!!!!!!!!!!!!!!jsljava 语言规范

解决方案 »

  1.   

    类型参数和类型变量不是在运行时具体化的:类型参数在编译期就确定了
    List<String> list = new ArrayList<String>();编译期就把接口和类中的T全部替换为String了。
    因此,不同的参数化类型是由相同的类或接口在运行时实现的:
    告诉你运行时泛型类仅仅是一个类,不会因为类型参数不同就有多个class文件
    List<String>、List<Integer>是一个类,只有一个class文件。
    编译器会抹掉泛型的……