# 가변 인자
자바 1.5 배포판부터 "가변 아리티 메소드" 라는 가변 인자 메소드가 추가 되었다.
메소드 호출 시 전달된 인자의 개수를 자신의 크기로 하는 배열을 생성하여,
그 배열을 파라미터로 호출된 메소드로 전달한다.
private void setParams(Object ... params) {
Map dummyParams = new HashMap();
for (int i = 0; i < params.length; i++) {
dummyParams.put(keys[i], params[i]);
}
action.setParams(dummyParams);
}
최소한 1개 이상의 파라미터가 필요한 경우
// AS-IS : 런타임 오류
if ( params.length == 0 ) {
throw new IllegalArgumentException("Error");
}
// TO-BE :
private void setParams(Object firstParam, Object ... remainingParam) { ...
성능이 중요한 상황에서 가변 인자를 사용할 때는 주의하자.
가변 인자 메소드를 호출할 때마다 배열 생성과 초기화가 일어난다.
예제) 사용 빈도가 많은 것들은 그냥 선언하고, 적은 것은 가변 인자를 사용함
public void foo() { }
public void foo(int a1) { }
public void foo(int a1, int a2) { }
public void foo(int a1, int a2, int ... rest) { }
출처 : Head First Java, Effective Java, 인터넷