这段代码的test1方法会不会重载成功?
public class Test {
public void test1(List<String> lists){
System.out.println("list1");
}
public void test1(List<Integer> list2){
System.out.println("list2");
}
public static void main(String[] args){
System.out.println("haha");
}
}
这段代码,编译工具就会提醒错误:

大概意思test1方法和test1方法的参数类型相同。
运行起来,编译就会发生错误。
原因是,
java采用语法糖的形式实现了java的泛型,在编译时会擦除语法糖,恢复基本语法的实现。上面的test1中的参数均会被擦除成原生类型List<E>,所以参数相同,不能实现方法重载。
本文探讨了Java中泛型方法的重载问题,并通过一个具体的例子解释了为何两个泛型方法无法实现重载。文章揭示了Java泛型背后的实现机制——类型擦除,并说明了这如何影响方法的签名。

144

被折叠的 条评论
为什么被折叠?



