我遇到了一个例子,我不确定Generics语法的行为。
public void m1(List<String> list) {
System.out.println("List size" + list.size());
}
public void m1(List<Integer> list) {
}
此处,m1
方法已重载但在Eclipse
中出现编译时错误,
方法m1(List)的擦除与Test
类型中的另一种方法相同
是否在编译时删除了方法的通用语法? 任何想法为什么会发生这种情况?
答案 0 :(得分:0)
编译器不会从.java文件中删除任何内容,而是创建.class文件,并且它不会复制注释,导入或所有通用信息(有些仍然存在)。有关更多信息,请参阅以下主题: Are generics removed by the compiler at compile time