Java方法重载-歧义 当我做一些测试来测试一些代码的时候,我发现了一个奇怪的事情,如果你考虑下面的程序 import java.util.ArrayList; import java.util.List; public class OverloadTest { public String test1(List l){ return "abc"; } public int test1(List<Integer> l){ return 1; } public static void main(String [] args) { List l = new ArrayList(); System.out.println(new OverloadTest().test1(l)); } }
但是仍然发现Java调用了Java方法重载-歧义 当我做一些测试来测试一些代码的时候,我发现了一个奇怪的事情,如果你考虑下面的程序 import java.util.ArrayList; import java.util.List; public class OverloadTest { public String test1(List l){ return "abc"; } public int test1(List<Integer> l){ return 1; } public static void main(String [] args) { List l = new ArrayList(); System.out.println(new OverloadTest().test1(l)); } },java,overloading,javac,Java,Overloading,Javac,但是仍然发现Java调用了test1(List param)方法,当我检查param时,它有字符串“a”(Java是如何将List转换为List?)这是一个固定错误 Eclipse 3.7的javac5、javac6和ecj中似乎存在此错误,但在Eclipse 3.8和更高版本中已修复。您提供的代码根本无法为我编译-我收到一个错误:错误:名称冲突:test1(列表)和test1(列表)具有相同的擦除,在Java中,模板数据结构是相关的,因此它不应该编译,但是如果使用C++,类似的东西可以编译,模
test1(List param)
方法,当我检查param
时,它有字符串“a”(Java是如何将List
转换为List
?)这是一个固定错误
Eclipse 3.7的javac5、javac6和ecj中似乎存在此错误,但在Eclipse 3.8和更高版本中已修复。您提供的代码根本无法为我编译-我收到一个错误:错误:名称冲突:test1(列表)和test1(列表)具有相同的擦除,在Java中,模板数据结构是相关的,因此它不应该编译,但是如果使用C++,类似的东西可以编译,模板类不共享任何代码,在Eclipse靛蓝,java 1.60java中执行代码。30@sanbhat您是否尝试过使用javac
进行编译?也许Eclipse的编译器中有一个bug。javac
给了我模糊性错误!!Eclipse Indigo如何编译甚至运行这段代码??
List l = new ArrayList();
l.add("a");
System.out.println(new OverloadTest().test1(l));