SSISO Community

시소당

Varargs

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

487 view

4.0 stars