一般情况下,我们是比较清楚方法参数具体的数量。但有些情况下想要获知参数数量是比较困难的,还是以之前的加法示例,我们不太可能知道用户会在终端中输入多少数字,程序所需要做的就是将所有数字进行相加,这就需要定义成员方法的可变参数。
如果输入的都是整数,可变列表用int... nums
来表示,其中nums
是一个数组:
public class Computer {
public int add(int... nums) {
int result = 0;
for (int num: nums) {
result += num;
}
return result;
}
public static void main(String[] args) {
Computer computer = new Computer();
System.out.println(computer.add(1, 2));
System.out.println(computer.add(1, 2, 3));
System.out.println(computer.add(1, 2, 3, 4, 5));
}
}
那么我们可以在方法中定义多个可变参数么,答案是不可以的,因为对于传入方法的实参,JVM 会分不清楚哪个值给nums1
,哪些值给nums2
。
public int add(int... nums1, int... nums2) {
...
return something;
}
另外需要注意的是,可变参数必须出现在参数列表的最后的位置,否则会报错。