http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#301183”rel=“noreferer”>15.12.2.5 选择最具体的方法就这样说,但很复杂。 e.g. Foo(Number... ints)和Foo(Integer... ints)之间的 Cho
为了落后的兼容,这些实际上是相同的。
public Foo(Object... args){} // syntactic sugar for Foo(Object[] args){}
// calls the varargs method.
Foo(new Object[]{new Object(), new Object()});
例如,你可以将主(主)定义为:
public static void main(String... args) {
使他们不同的方式是,在加拉尔之前就有一个论点。
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.
它们并不完全相同。 微妙的区别是,虽然你能够把一个阵列转至一个堡垒,但你可以把一个阵列参数作为空洞。
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.
此外,var必须是最后的参数。
public Foo(Object... os, int i){} // fails to compile.
public Bar(Object[] os, int i) {} // compiles ok.