7.
【知识点】
(1)变元参数(Varargs)
在定义方法参数时,有时我们会需要多个数据类型相同的参数,但无法事先确定参数个数,使用变元参数(Varargs)就可以解决这个问题。
变元参数必须定义为方法中最后一个形式参数,在参数类型后跟由三个小圆点构成的省略号(即:… ),然后是一个空格,接着是形式参数名,如:
public Polygon polygonFrom(String format, Point... corners) {
……
}
带有变元参数的方法在调用时,可以使用指定类型的任何数目参数,甚至可以没有参数。
在定义变元参数的方法中,变元参数可以当作数组处理,参数名相当于数组名,通过数组索引号作为参数序号引用对应参数。
在调用变元参数的方法时,既可以将数组名作为实参传递给变元参数,也可以将若干个具有相同数据类型的实参序列传递给变元参数,这若干个相同类型的实参在带变元参数的方法中仍可以根据参数列表中序号对应的数组元素进行处理。
【例题】
Given:
public class Barn {
public static void main(String[]args) {
new Barn().go("hi",1);
new Barn().go("hi","world", 2);
}
public void go(String... y,int x) {
System.out.print(y[y.length - 1] +" ");
}
}
What is the result?
A. hi hi
B. hi world
C. world world
D. Compilation fails.
E. An exception is thrown at runtime.
【Answer】 D
【例题辨析】
根据方法声明中使用变元参数的规定,变元参数必须是方法中最后一个参数,显然public void go(String...y, int x)中变元参数y不是最后一个参数,因此无法通过编译,答案为D。