Java 为什么我总是出错? publicstaticvoidadd3(arraylista) { 扫描仪控制台=新扫描仪(System.in); int i=console.nextInt(); a、 加(i); i=console.nextInt(); a、 加(i); i=console.nextInt(); a、 加(i); } 公共静态无效添加3(ArrayList a) { 扫描仪控制台=新扫描仪(System.in); double i=console.nextDouble(); a、 加(i); i=console.nextDouble(); a、 加(i); i=console.nextDouble(); a、 加(i); }

Java 为什么我总是出错? publicstaticvoidadd3(arraylista) { 扫描仪控制台=新扫描仪(System.in); int i=console.nextInt(); a、 加(i); i=console.nextInt(); a、 加(i); i=console.nextInt(); a、 加(i); } 公共静态无效添加3(ArrayList a) { 扫描仪控制台=新扫描仪(System.in); double i=console.nextDouble(); a、 加(i); i=console.nextDouble(); a、 加(i); i=console.nextDouble(); a、 加(i); },java,methods,arraylist,integer,double,Java,Methods,Arraylist,Integer,Double,当我运行我的程序时,整数版本可以工作,而双精度版本不行。它不断给我一个错误,说类型不适用于add3(arraylista)。这让我很困惑,因为还有另一种方法使用double类型,但似乎编译器看不到它。有没有关于如何让它工作的建议?谢谢。作为,由于类型原因,此操作不起作用: 一个类不能有两个重载方法具有相同的 删除类型后的签名 公共类示例{ 公共作废打印(集合strSet){} 公共无效打印(Set intSet){} 重载将共享相同的类文件表示,并将生成编译时错误 在类型擦除之后,两种方法都将

当我运行我的程序时,整数版本可以工作,而双精度版本不行。它不断给我一个错误,说类型不适用于add3(arraylista)。这让我很困惑,因为还有另一种方法使用double类型,但似乎编译器看不到它。有没有关于如何让它工作的建议?谢谢。

作为,由于类型原因,此操作不起作用:

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

公共类示例{
公共作废打印(集合strSet){}
公共无效打印(Set intSet){}
重载将共享相同的类文件表示,并将生成编译时错误


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

您如何调用这些方法?当然是由于类型擦除,因为:类型擦除。这两个方法具有相同的签名。换句话说,尝试重命名一个方法。@AbhinavKumar它不会。我怀疑OP不理解编译时错误和运行时错误之间的区别-他们只是在IDE中按下“运行”按钮。好吧,我如何在保持它们过载的同时修复它(我不想更改名称)?@user3396838你。。。不能这不是Java的工作方式。不能有两个同名的方法使用相同的参数,类型擦除后就是这样。
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);
}
public class Example {
    public void print(Set<String> strSet) { }
    public void print(Set<Integer> intSet) { } }