[java] 가변 인자

2016. 6. 23. 17:29프로그래밍/JAVA

    목차

가변인자 문법은 JDK5.0 버전부터 추가 되었다.
메소드를 호출하는데 인자가 고정적이지 않을 때 가변인자 문법을 사용하면 배열이나 Collection을 사용하지 않아도 된다.


사용법

사용법은 간단하다.
메소드에서 매개변수값 앞에 만 붙여주면 된다.


class A{
    private String a;
    public A(String a) {
        this.a = a;
    }
    public String toString() {
        return "A [a=" + a + "]";
    }
}

public class ArgsTest {
    public static void main(String[] args) {
        display("헬로우","안녕","반가워");
        aDisplay(new A("hello"), new A("hi"), new A("nicetomeetyou"));
    }

    static void display(String ... args){
        for(String str : args){
            System.out.println(str);
        }
    }

    static void aDisplay(A ... args){
        for(A a : args){
            System.out.println(a);
        }
    }
}


// 결과
// 헬로우
// 안녕
// 반가워
// A [a=hello]
// A [a=hi]
// A [a=nicetomeetyou]


사실 가변인자 원리는 컴파일러가 가변인자를 만나면 매개변수를 배열로 변환해준다.

  • 원본 : public static void display(String… strs)
  • 컴파일러 변환 후 : public static void display(String as[])

메서드 호출 시 인자들을 이용해서 배열로 만들어 준다.

  • 원본 : display(“Hello”, “World”, “Korea”);
  • 컴파일러 변환 후 : display(new String[] {“Hello”, “World”, “Korea” });


[출처] http://gyrfalcon.tistory.com/entry/Java-Varargs