JAVA/포스팅

자바 가변인자와 오버로딩

짜집퍼박사(짜박) 2023. 11. 8. 15:19

자바에서 가변인자(varargs)와 오버로딩을 함께 사용하는 경우에 대해 자세히 설명하겠습니다.

 

1. 가변인자 (Varargs)란?

가변인자는 메서드의 매개변수로 변동적인 개수의 인수를 전달할 수 있게 하는 자바의 기능입니다. 가변인자를 사용하면 동일한 메서드를 여러 다른 개수의 인수로 호출할 수 있습니다. 가변인자는 배열로 처리되며, 메서드 내에서 배열로 다루어집니다.

가변인자를 정의할 때는 "..." (세 개의 점)을 사용하여 매개변수를 표시합니다. 예를 들어,

public void printNumbers(int... numbers) {
    for (int num : numbers) {
        System.out.print(num + " ");
    }
}

위의 메서드는 0개 이상의 정수를 받아들이는 가변인자를 가지고 있습니다. 이 메서드를 호출할 때 0개 이상의 정수를 전달할 수 있습니다.

 

2. 가변인자와 오버로딩

가변인자와 오버로딩을 함께 사용하는 경우, 주의할 점이 있습니다. 메서드 호출 시에 가변인자를 사용하는 메서드와 일반적인 오버로딩 메서드 간에 모호성이 발생할 수 있습니다.

예를 들어, 다음 두 메서드를 가정해 봅시다.

public void processNumbers(int... numbers) {
    // 가변인자를 처리하는 코드
}

public void processNumbers(int a, int b) {
    // 두 개의 정수를 처리하는 코드
}

만약 다음과 같이 호출하면 어떻게 될까요?

processNumbers(1, 2);

이 경우, 컴파일러는 어떤 메서드를 호출해야 하는지 판단하기 어려울 수 있습니다. 가변인자를 사용한 메서드와 두 개의 정수를 받는 메서드 중 어떤 것을 호출해야 하는지 구분할 수 없기 때문입니다.

이런 모호성을 해결하기 위해서는 메서드 호출 시에 명시적으로 어떤 메서드를 호출할 것인지 지정해야 합니다. 가변인자 메서드를 호출하려면 다음과 같이 메서드 이름 뒤에 "()"를 사용하여 빈 가변인자 목록을 전달하면 됩니다.

processNumbers(); // 가변인자 메서드 호출

이렇게 하면 컴파일러는 어떤 메서드를 호출할지 명확하게 이해할 수 있습니다.

가변인자와 오버로딩을 함께 사용할 때 모호성을 방지하려면 주의가 필요하며, 명시적인 호출이나 다른 방법을 사용하여 모호성을 해결해야 합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 기본 생성자  (0) 2023.11.08
자바 생성자란?  (0) 2023.11.08
자바 오버로딩의 장점  (0) 2023.11.08
자바 오버로딩의 예제  (0) 2023.11.08
자바 오버로딩의 조건  (0) 2023.11.08