public static void add3(ArrayList<Integer> a)
{
Scanner console = new Scanner(System.in);
int i = console.nextInt();
a.add(i);
i = console.nextInt();
a.add(i);
i = console.nextInt();
a.add(i);
}
public static void add3(ArrayList<Double> a)
{
Scanner console = new Scanner(System.in);
double i = console.nextDouble();
a.add(i);
i = console.nextDouble();
a.add(i);
i = console.nextDouble();
a.add(i);
}
当我运行程序时,Integer版本可以正常工作,但是Double版本没有。它一直给我一个错误,说明类型不适用于add3(ArrayList a)。这让我感到困惑,因为还有另一种类型为double的方法,但似乎编译器无法看到它。有关如何使其工作的任何建议?感谢。
答案 0 :(得分:1)
作为tutorial from Oracles states,由于类型为easure,这不起作用:
一个类不能有两个具有相同的重载方法 类型擦除后的签名。
public class Example {
public void print(Set<String> strSet) { }
public void print(Set<Integer> intSet) { } }
重载将共享相同的类文件表示,并将生成编译时错误。
在类型擦除之后,两种方法都将Set
作为它们的单个参数,并且不能彼此区分。