使用单个 arg 和 varargs 重载

Overloading with single arg and varargs

假设我有以下两个功能:

public foo(String str){
    System.out.println(str);
}

public foo(String... str){
    System.out.println("varargs");
    for(String s: str){
        System.out.println(s);
    }
}

它会编译吗? 如果它会用 foo("hi")?

调用哪个 foo

Will it compile?

没有。因为您的两种方法都缺少 return 类型。

如果设置为void

public void foo(String str){
    System.out.println(str);
}

public void foo(String... str){
    System.out.println("varargs");
    for(String s: str){
        System.out.println(s);
    }
}

然后它会编译。

If it will which foo will be called with foo("hi")?

将调用foo(String str)方法,您可以轻松查看。