一般情况下,我们是比较清楚方法参数具体的数量。但有些情况下想要获知参数数量是比较困难的,还是以之前的加法示例,我们不太可能知道用户会在终端中输入多少数字,程序所需要做的就是将所有数字进行相加,这就需要定义成员方法的可变参数。
如果输入的都是整数,可变列表用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;}
另外需要注意的是,可变参数必须出现在参数列表的最后的位置,否则会报错。
