一般情况下,我们是比较清楚方法参数具体的数量。但有些情况下想要获知参数数量是比较困难的,还是以之前的加法示例,我们不太可能知道用户会在终端中输入多少数字,程序所需要做的就是将所有数字进行相加,这就需要定义成员方法的可变参数

    如果输入的都是整数,可变列表用int... nums来表示,其中nums是一个数组:

    1. public class Computer {
    2. public int add(int... nums) {
    3. int result = 0;
    4. for (int num: nums) {
    5. result += num;
    6. }
    7. return result;
    8. }
    9. public static void main(String[] args) {
    10. Computer computer = new Computer();
    11. System.out.println(computer.add(1, 2));
    12. System.out.println(computer.add(1, 2, 3));
    13. System.out.println(computer.add(1, 2, 3, 4, 5));
    14. }
    15. }

    那么我们可以在方法中定义多个可变参数么,答案是不可以的,因为对于传入方法的实参,JVM 会分不清楚哪个值给nums1,哪些值给nums2

    1. public int add(int... nums1, int... nums2) {
    2. ...
    3. return something;
    4. }

    另外需要注意的是,可变参数必须出现在参数列表的最后的位置,否则会报错。