如何声明一个函数,既能接收单个参数,又可以接收多个参数呢?多个参数的个数是不固定的。
需要使用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);
}
}