가변인수 메서드는 명시한 타입의 인수를 0개 이상 받을 수 있다.
다음은 int 인수들의 합을 계산하는 가변인수 메서드다.
static int sum(int... args) {
int sum = 0;
for (int arg : args)
sum += arg;
return sum;
}
인수가 1개 이상이어야 할 때는 첫 번째에 일반 매개변수를 받고, 두 번째에 가변인수를 받으면 된다.
다음은 최솟값을 찾는 메서드다.
static int min(int firstArg, int... remainingArgs) {
int min = firstArg;
for (int arg : remainingArgs)
if (arg < min)
min = arg;
return min;
}
성능에 민감한 상황이라면 가변인수가 걸림돌이 될 수 있다.
가변인수 메서드는 호출될 때마다 배열을 새로 하나 할당하고 초기화하기 때문이다.
다중정의
를 이용하자!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) {}
📌 핵심 정리
인수 개수가 일정하지 않은 메서드를 정의해야 한다면
가변인수
가 반드시 필요하다.
메서드를 정의할 때 필수 매개변수는 가변인수 앞에 두고, 가변인수를 사용할 때는성능 문제
까지 고려하자.