为什么我不能在同一个类中同时拥有这两种方法?
public double foo(ArrayList<Integer> x);
public double foo(ArrayList<Double> d);
为什么我不能在同一个类中同时拥有这两种方法?
public double foo(ArrayList<Integer> x);
public double foo(ArrayList<Double> d);
当 Java 实现泛型时,为了使字节码向后兼容,他们提出了类型擦除。这意味着在运行时,通用信息消失了。所以签名真的是:
public double foo(ArrayList x);
public double foo(ArrayList d);
并且您有两个具有相同签名的方法。
这里的解决方案是不要重载方法名称;为这两种方法命名不同的名称。
您的问题是这两种方法具有相同的方法签名。要重载方法,它们必须具有相同的名称和返回类型,但方法签名不同,在这种情况下,两种方法都接受数组列表。
Why don't you try to change it to:
public double fooInteger(ArrayList<Integer> x);
public double fooDouble(ArrayList<Double> d);
I had a similar problem with my applet until I changed the name of the second array.