这个15.12.2.5选择最具体的方法对此进行了讨论,但是它相当复杂。例如,在Foo(数字…整数)和Foo(整数…整数)之间进行选择
为了向后兼容,这些实际上是同一件事。
public Foo(Object... args){} // syntactic sugar for Foo(Object[] args){}// calls the varargs method.Foo(new Object[]{new Object(), new Object()});例如,您可以将main()定义为
public static void main(String... args) {一种使它们与众不同的方法是在varargs之前接受一个参数
public Foo(Object o, Object... os){}public Foo(Object[] os) {}Foo(new Object(), new Object()); // calls the first.Foo(new Object[]{new Object(), new Object()}); // calls the second.它们并不完全相同。细微的区别是,尽管您可以将数组传递给varargs,但不能将数组参数视为varargs。
public Foo(Object... os){}public Bar(Object[] os) {}Foo(new Object[]{new Object(), new Object()}); // compiles fine.Bar(new Object(), new Object()); // Fails to compile.此外,变量必须是最后一个参数。
public Foo(Object... os, int i){} // fails to compile.public Bar(Object[] os, int i) {} // compiles ok.

![为什么在Java中不允许Foo(Object [])重载Foo(Object…)? 为什么在Java中不允许Foo(Object [])重载Foo(Object…)?](http://www.mshxw.com/aiimages/31/464213.png)
