시소당
Varargs를 굳이 번역하자면 "가변 인수" 정도 될 거 같다. 가변인수에 대해서 이해하기 위해서는 C의 printf 함수를 보면 된다. printf 함수의 인수는 개수가 정해져 있지 않다. printf 함수는 다음과 같이 인수의 개수를 다르게 사용할 수 있다.
printf( "%d", 1 );
printf( "%d %d", 1, 2 );
printf( "%d %d %d", 1, 2, 3 );
......
하지만 자바에서는 가변 인수가 허용되지 않기 때문에 해당 메소드를 모두 구현해 주거나(오버로딩), 배열을 인수로 받아서 처리했었다. (정말 번거로운 일이 아닐 수 없다.) 자바 1.5에서는 이런 번거로움을 없애기 위해 C의 printf 함수와 같이 가변 인수를 갖는 메소드를 구현할 수 있도록 하였다.
public void someMethod( Object... obj ){
....
}
위의 예시와 같이 "..." 을 사용하여 가변인수를 갖는 메소드를 작성할 수 있다. 위의 예제 코드에서 Object... 로 선언된 obj는 Object[] 로 선언된 것과 동일하다고 할 수 있다. 따라서 가변 인수를 다음과 같이 처리할 수 있다.
public void someMethod( Object... obj ){
....
if( obj.length > 0 ){
....
}
}
가변인수는 오토방식/언박싱과 함께 사용되어 다음과 같은 상황에서도 컴파일 에러가 나지 않는다.
someMethod( new Integer(1) );
someMethod( 1 );
......
public void someMethod( Integer... obj ){ // equals "int... obj"
....
if( obj.length > 0 ){
....
}
}
[출처] 자바2 1.5의 새로운 특징들, 2 |작성자 경덕군
http://blog.naver.com/lover1125?Redirect=Log&logNo=100004517144