코딩항해기
[JAVA] 가변인자 본문
가변인자 Variable Arguments (...)
가변인자는 메서드의 매개변수를 동적으로 처리 할 수 있도록 한다. 가변인자를 사용하면 메서드 호출 시 전달되는 인자의 개수를 동적으로 변경할 수 있다.
JDK 1.5부터 사용 가능하다. printf()메서드가 가장 대표적인 예이다.
가변인자 문법
타입... 변수명
가변인자는 매개변수 중에서 제일 마지막에 선언해야한다. 앞쪽에 선언할 경우 컴파일 에러가 발생한다.
활용 예시
public class Main {
public static void main(String[] args) {
System.out.println(concatenate()); // 인자가 없음
System.out.println(concatenate("jo")); // 인자가 하나
System.out.println(concatenate("jo", "min", "seo")); // 인자가 셋
System.out.println(concatenate(new String[] {"A", "B"})); // 인자가 배열
}
static String[] concatenate(String... str) {
return str;
}
}
가변인자는 내부적으로 배열을 사용하는 것으로 가변인자가 선언된 메서드를 호출할 때마다 배열이 새로 생성된다는 비효율적인 측면이 있어 사용에 신중해야한다.
그럼 매개변수 타입을 배열로 하면 같은 것이라고 생각될 수도 있는데, 이 경우 반드시 인자를 지정해야해서 생략할 수 없으므로 null이나 길이가 없는 배열을 지정해야하는 문제가 있다.
또한 오버로딩할 때도 문제가 될 수 있는데, 가변인자를 사용하다보니 어떤 메서드를 호출하는지 알 수 없는 문제가 발생할 수도 있다. 가능하다면 가변인자를 사용한 메서드는 오버로딩하지 않는 것이 좋다.
참고 블로그 : https://velog.io/@minseojo/Java-%EA%B0%80%EB%B3%80%EC%9D%B8%EC%9E%90-varargs
'JAVA' 카테고리의 다른 글
[JAVA] OOP의 5가지 원칙 (0) | 2024.11.30 |
---|---|
[JAVA] 스택 Stack (0) | 2024.11.19 |
[JAVA] 날짜 함수 (JAVA 8 이후) (0) | 2024.10.17 |
[JAVA] UUID Universally Unique Identifier (0) | 2024.10.17 |
[JAVA] JavaDoc 주석 (API주석) (0) | 2024.10.13 |