프로그래밍/JAVA
[java] 가변 인자
Develop_lee
2016. 6. 23. 17:29
가변인자 문법은 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” });