static int sum(int... args) {
int sum = 0;
for (int arg: args) {
sum += arg;
}
return sum;
}
인수가 1개 이상이어야 할 때
// BAD
// 컴파일 타임에 오류를 잡지 못함.
// 코드가 지저분함.
static int min(int.. args) {
if (args.length == 0) {
throw new IllegalArgumentException("인수가 1개 이상 필요합니다.")
}
int min = args[0];
for (int i=1;i<args.length; i++) {
if (args[i] < min) {
min = args[i];
}
}
return min;
}
// GOOD
static int min(int firstArg, int.. remainingArgs) {
int min = firstArg;
for (int arg : remainingArgs) {
if (arg < min) {
min = arg;
}
}
return min;
}
배열을 매번 생성하고 싶지 않다면..?
이부분을 오버로딩을 통해서 개선시켜 보자!
만약 95%가 인자 3개 이하인 메서드만 사용한다면..
public void foo() { }
public void foo(int a1) { }
public void foo(int a1, int a2) { }
public void foo(int a1, int a2, int a3) { }
public void foo(int a1, int a2, int a3, int... rest) { }
가변인수는 신중히 사용하라
예시
인수가 1개 이상이어야 할 때
배열을 매번 생성하고 싶지 않다면..?