String []和String ...(Var-args)在内部工作时是否相同?

whi*_*hat 7 java arrays variadic-functions

class WrongOverloading{
    void something(String [] a){ .. }
    Integer something(String... aaa){ return 1;}
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不能编译!编译器说这些是重复的方法.那么使用String数组或String var-args是否完全相同?

它们是如何在内部实施的?

Pet*_*rey 6

它们实际上是相同的,除非编译器不接受varargs,除非它是最后一个参数,并且它不允许您将多个参数传递给数组.

public void methodA(int... ints, int a); // doesn't compile
public void methodA(int[] ints, int a); // compiles

public void methodB(int... ints); // compiles
public void methodC(int[] ints); // compiles

methodB(1); // compiles
methodB(1,2,3,4); // compiles
methodC(1); // doesn't compile
methodC(1,2,3,4); // doesn't compile
Run Code Online (Sandbox Code Playgroud)