반응형
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다.
아이템 53. 가변인수는 신중히 사용하라
가변인수 메서드
- 명시한 타입의 인수를 0개 이상 받을 수 있다.
- 가변인수 메서드를 호출하면, 가장 먼저 인수의 개수와 길이가 같은 배열을 만들고 인수들을 이 배열에 저장하여 가변인수 메서드에 건네준다.
ex 1) 입력받은 int 인수들의 합을 계산해주는 가변인수 메서드
static int sum(int... args) {
int sum = 0;
for (int arg : args)
sum += arg;
return sum;
}
ex 2) 인수가 1개 이상이어야하는 가변인수 메서드 (좋지 않은 예)
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;
}
- 인수를 0개 넣어 호출하면 런타임에 실패한다.
ex3) ex 2의 코드를 좋게 수정한 예
static int min(int firstArgs, int... remainingArgs) {
int min = firstArg;
for (int arg : remainingArgs)
if (arg < min)
min = arg;
return min;
}
- 매개변수를 2개 받도록하면 된다.
- 첫 번째로 평범한 매개변수를 받고, 가변인수는 두 번쨰로 받으면 된다.
정리
- 인수 개수가 일정하지 않은 메서드를 정의해야 한다면 가변인수가 반드시 필요하다.
- 메서드를 정의할 때 필수 매개변수는 가변인수 앞에 두고, 가변인수를 사용할 때는 성능 문제도 생각하자.
반응형
'BE > Java' 카테고리의 다른 글
[Effective Java] 아이템 55. 옵셔널 반환은 신중히 하라 (0) | 2022.11.18 |
---|---|
[Effective Java] 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라 (0) | 2022.11.17 |
[Effective Java] 아이템 52. 다중정의는 신중히 사용하라 (0) | 2022.11.15 |
[Effective Java] 아이템 51. 메서드 시그니처를 신중히 설계하라 (0) | 2022.11.14 |
[Effective Java] 아이템 50. 적시에 방어적 복사본을 만들라 (0) | 2022.11.11 |