728x90
반응형
Java에서 가변 파라미터(Variable Arguments) 또는 "나머지 매개변수(Rest Parameter)"는 메서드가 불특정 개수의 인수를 받을 수 있도록 합니다. 이는 Java 5에서 도입되었으며, 메서드를 더 유연하게 만들어줍니다. 가변 파라미터를 사용하는 방법과 주의사항에 대해 자세히 알아보겠습니다.
가변 파라미터 기본 사용법
가변 파라미터는 메서드의 매개변수 목록에서 마지막에 위치하며, ... 기호를 사용하여 정의합니다. 메서드 내에서 가변 파라미터는 배열로 처리됩니다.
public class VarargsExample {
public static void main(String[] args) {
// 여러 개의 인수를 전달할 수 있습니다.
printNumbers(1, 2, 3, 4, 5);
}
// 가변 파라미터를 사용하는 메서드
public static void printNumbers(int... numbers) {
for (int number : numbers) {
System.out.println(number);
}
}
}
설명
- int... numbers는 가변 파라미터를 정의한 부분입니다. 이 메서드는 임의의 개수의 int 값을 받을 수 있습니다.
- 메서드 내부에서 numbers는 int[] 배열로 처리됩니다.
가변 파라미터와 다른 매개변수 함께 사용하기
가변 파라미터는 반드시 매개변수 목록의 마지막에 위치해야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.
public class VarargsExample {
public static void main(String[] args) {
displayMessage("Numbers:", 1, 2, 3, 4, 5);
}
// 가변 파라미터와 다른 매개변수를 함께 사용
public static void displayMessage(String message, int... numbers) {
System.out.println(message);
for (int number : numbers) {
System.out.println(number);
}
}
}
설명
- displayMessage(String message, int... numbers)에서 가변 파라미터 numbers는 마지막에 위치해야 합니다.
가변 파라미터의 장점
- 유연성: 메서드가 가변적인 수의 인수를 받을 수 있어 코드의 유연성이 높아집니다.
- 가독성: 메서드 호출 시 배열을 명시적으로 생성하지 않아도 되므로 코드가 더 간결해집니다.
주의사항
- 과도한 사용 지양: 가변 파라미터를 과도하게 사용하면 메서드의 의도가 불명확해질 수 있습니다. 필요한 경우에만 사용해야 합니다.
- 성능 문제: 가변 파라미터는 내부적으로 배열을 생성하므로 성능에 민감한 코드에서는 주의가 필요합니다.
- 타입 안전성: 가변 파라미터를 사용할 때는 타입 안전성에 주의해야 합니다. 예를 들어, 제네릭 타입의 가변 파라미터는 타입 안전성이 떨어질 수 있습니다.
public class VarargsExample {
public static void main(String[] args) {
// 타입 안전하지 않은 가변 파라미터 사용 예시
unsafeMethod("test", 1, 2, 3);
}
// 제네릭 타입의 가변 파라미터
@SafeVarargs
public static <T> void unsafeMethod(T... elements) {
for (T element : elements) {
System.out.println(element);
}
}
}
설명
- @SafeVarargs 어노테이션을 사용해 제네릭 타입의 가변 파라미터를 안전하게 사용할 수 있도록 합니다.
Java의 가변 파라미터는 메서드를 유연하게 만들어주는 강력한 기능입니다. 적절하게 사용하면 코드의 가독성과 유연성을 높일 수 있지만, 남용하지 않도록 주의가 필요합니다. 타입 안전성과 성능을 고려하여 필요한 경우에만 사용하도록 합니다.
728x90
반응형
'Programming > Java Spring' 카테고리의 다른 글
Spring Initializr에서 Spring Boot 버전 선택: Snapshot, M1의 의미와 권장 버전 선택 방법 (0) | 2024.08.07 |
---|---|
강한 결합과 느슨한 결합에 대해 (0) | 2024.07.24 |
Java의 Optional 클래스 자세히 알아보기 (0) | 2024.07.07 |
Java에서 거듭제곱 계산하기 (0) | 2024.07.05 |
Java Map의 초기용량을 설정해야 하는 이유 (0) | 2023.03.01 |