IT/development

[Java] 가변인자 사용(feat. String ... str)

알 수 없는 사용자 2023. 8. 22. 05:06
반응형

java에서 parameter개수와 타입을 다르게 해서 같은 기능을 하는 메소드를 동일한 메소드명으로 사용할 수 있다.(오버로딩)

@Slf4j
public class Test {

    public void print(String str) {
        log.info("str = [{}]", str);        
    }

    public void print(int num) {
        log.info("num = [{}]", num);
    }
}

하지만 parameter의 개수를 가변적으로 사용하고 싶을 땐?

Test test = new Test();

//이렇게 호출하고 싶을 때..
test.print(1);
test.print(1, 2);
test.print(1, 2, 3);
test.print(1, 2, 3, 4);
test.print(1, 2, 3, 4, 5);
test.print(1, 2, 3, 4, 5, 6);

오버로딩을 계속 해야 되나? 🙄
이 때 사용할 수 있는 게 가변적 인자(데이터 타입... 변수명)이고 jdk 1.5이상부터 지원된다.

public class Test {
    //int타입 가변인자 사용(데이터 타입 ... 변수명)
    public static void print(int... numbers) {
        for (int num : numbers) {
            log.info("numbers = [{}]", num);
        }
    }

    public static void main(String[] args) {
        printNumbers(1, 2, 3);      // 가변인자로 여러 개의 인자 전달
        printNumbers(10, 20, 30, 40, 50);
        printNumbers();            // 아무 인자도 전달하지 않아도 됨
    }
}

코드를 보면 알겠지만 내부적으로는 배열로 처리되기 때문에 전달하는 인자의 타입은 동일해야 한다.


개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.

반응형