들어가며
가변 인수를 사용할 때는 신중해야 한다. 다음 코드를 보자.
1 | static int min(int... args) { |
위의 코드는 인수를 0개를 넣는 경우를 제하기 위해 런타임에 에러를 던진다. 또한 코드도 지저분하다. 해법은 매개변수를 2개 받는것이다. 다음 코드를 보자.
1 | static int min(int firstArg, int... remainingArgs) { |
2개의 매개변수 덕분에 유효성 검사를 하지 않아도 되며 for-each 구문도 사용할 수 있게 되었다. 하지만 가변인수 메소드가 성능에 민감한 상황이라면 걸림돌이 될 수 있다. 가변인수 메소드는 호출될 때마다 배열을 새로 하나 할당하고 초기화하기 때문이다. 그럴때는 다음과 같은 방법이 있다. 예를 들어 메소드 호출의 대부분이 인수가 n개 이하라면 n개 초과인 요청부터는 가변인수로 받는 것이다.
1 | public void foo() {} |