为什么我一直收到错误?

时间:2014-03-08 19:19:46

标签: java methods arraylist integer double

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的方法,但似乎编译器无法看到它。有关如何使其工作的任何建议?感谢。

1 个答案:

答案 0 :(得分:1)

作为tutorial from Oracles states,由于类型为easure,这不起作用:

  

一个类不能有两个具有相同的重载方法   类型擦除后的签名。

public class Example {
    public void print(Set<String> strSet) { }
    public void print(Set<Integer> intSet) { } } 
  

重载将共享相同的类文件表示,并将生成编译时错误。

在类型擦除之后,两种方法都将Set作为它们的单个参数,并且不能彼此区分。