在runtime时期,会将所有的类型形参和类型实参擦除,比如List<String>
被转换为List
,既raw type
以下类型是相同的
System.out.println(new ArrayList<String>().getClass()); //class java.util.ArrayList
System.out.println(new ArrayList<Long>().getClass()); //class java.util.ArrayList
参考:
http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html#Why%20do%20instantiations%20of%20a%20parameterized%20type%20share%20the%20same%20runtime%20type?