如何声明一个函数,既能接收单个参数,又可以接收多个参数呢?多个参数的个数是不固定的。

需要使用int ...param的方法,jvm会自动把他转换成int数组的方式,查看class类的反编译文件可以看到。


使用时候可以

不传递参数

传递1个参数

传递多个参数

传递int数组参数


方法中获取值可以使用数组的下标方式,也可以使用foreach循环。


如果同时存在同名称的不定参数函数和单参数函数,会自动调用单参数函数。

如果同时存在同名称的不定参数函数和数组参数函数,会编译报错。因为不定参数的本质是数组。


package com.lu.test;

import java.util.ArrayList;
import java.util.List;

public class ParamTest {

    
    public static int getResultByParams2(List<Integer> params){
        int num = 0;
        for (Integer integer : params) {
            num += integer;
        }
        System.out.println(num);
        System.out.println("111");
        return num;
    }
    
    public static int getResultByParams2(int ... params){
        int num = 0;
        for (Integer integer : params) {
            num += integer;
        }
        System.out.println(num);
        return num;
    }
    
    public static void main(String[] args) {
        getResultByParams2(new ArrayList<Integer>(){});
        getResultByParams2(1);
        getResultByParams2(1,2,3);
        
    }
}