brunch
매거진 Effective Java

Effective Java - 메서드(method)

#42 가변 인자(varargs)를 분별력 있게 사용하자

by 이승현

Effective Java - 메서드(method)


#42 가변 인자(varargs)를 분별력 있게 사용하자


캡처1.PNG #01 varargs


가변 인자(varargs) 메서드는 특정 타입의 인자를 하나 이상 받는 메서드입니다.

1. 전달된 인자의 개수를 자신의 크기로 하는 배열을 생성

2. 전달된 인자의 값들을 배열에 삽입(초기화)

3. 이 배열을 메서드로 전달


만약 가변 인자를 주지 않고 호출하면(min()), IllegalArgumentException 예외가 런타임 시 발생합니다.

캡처2.PNG #02 min method


이를 방지하기 위해 하나의 일반 매개 변수와 가변 인자 매개 변수를 받는 메서드를 이용할 수 있습니다.

캡처3.PNG #03 min method




가변 인자를 이용할 때는 성능 측면도 고려해야 합니다.

가변 인자 메서드는 호출할 때마다 배열 생성과 초기화가 일어나기 때문에, 성능적인 측면에서는 일반 매개 변수를 이용하는 메서드보다는 성능면에서 좋지 않습니다.


캡처4.PNG #04 foo methods


이런 경우에는 일반 매개 변수들(0~3개)을 가지는 오버 로딩된 메서드들과, 변수가 4개 이상일 때는 가변 인자를 쓰는 메서드들로 나누어서 구현할 수 있습니다.

이러면 적어도 인자의 개수가 3개 이하 일 때는 가변 인자로 인한 성능 이슈가 발생하지 않습니다.




keyword
매거진의 이전글Effective Java - 메서드(method)