Java中的以下代码使用 varargs 来重载方法。
final public class Main
{
private void show(int []a)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
}
private void show(Object...a)
{
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
System.out.println("\nvarargs called");
}
public static void main(String... args)
{
int[]temp=new int[]{1,2,3,4};
Main main=new Main();
main.show(temp);
main.show(); //<-- How is this possible?
}
}
以上代码的输出如下:
1 2 3 4
varargs called
main.show();
方法中的最后一行main()
调用show(Object...a){}
方法,该方法具有 varargs 形式参数。这个语句main.show();
如何调用那个没有实际参数的方法?
答案 0 :(得分:3)
main.show()
调用show(Object... a)
方法并传递零长度数组。
Varargs允许您拥有零个或多个参数,这就是使用main.show()
调用它的合法原因。
顺便提一下,我建议您不要在\n
语句中嵌入System.out.println
- ln
中的println
位会为您打印换行符适合您正在运行的系统。 \n
不可移植。
答案 1 :(得分:1)
varargs语法基本上允许你指定有可能的参数,对吗?他们可以在那里,或者不能在那里。这就是三个点的目的。调用方法时,可以使用或不使用这些参数调用它。这样做是为了避免必须将数组传递给方法。例如,您可以写:
main.show(1, 2, 3, 4);
这也可以,因为数字将成为包装类中的对象。 如果您仍然感到困惑,请看一下: http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html 或这个: When do you use varargs in Java?
答案 2 :(得分:1)
main.show()
调用接受NO参数,这对于匹配show(Object ... a)方法非常有效。