2009년 10월 27일 화요일

JDK5의 새로운 기능 - 1부. 비정형인자(Varargs)

과거 JDK2버전부터 개발해온 입장에서 항상 새로운 JDK가 릴리즈되면

무엇이 차이인지 궁금한 마음에 이것 저것 찾아보았지만

막상 JDK5의 기능으로 구성된 소스들을 보게 되면 아리송한 내용이 많았다.

그래서 정리를 해보도록 하겠다.

 

1부 비정형인자(Varargs)

 

개발을 하다보면 메소스 생성시 인자의 수가 정해지지 않은 메소드가 필요할 경우가 있다.

보통은 이런 경우에 Set나 Map, List 등의 Collection을 이용해서 인자로 전달하게되는데

Collection들의 경우 전달하는 측에서 Instance를 생성해야한다는 불편과 더불어

처리하는 쪽에서도 Casting을 해야하는 불편이 있다.

(Casting문제는 다음편에 다룰 제너릭에서 답을 구할 수있다)

 

JDK5에서는 이러한 불편함을 해소하기 위해서 임의의 수의 인자를 전달하는 선언이 가능하게 되었다.

 

인자로 받는 수를 더해주는 add 라는 메소드가 필요할 경우

 

//JDK 1.4 이전

List args = new ArrayList();

args.add(10);

args.add(11);

args.add(12);

add(args);

 

public int add(List args) {

  int sum = 0;

  for(Iterator iter=args.iterator(); iter.hasNext(); ) {

    int arg = (Integer) iter.next();

    sum += arg

  }

  return sum;

}

 

//JDK 5

add(10,11,12);

public int add(int... args) {
  int sum = 0;
  for(int arg : args) {
    sum += arg;
  }
}

 

대단히 간편하게 인자의 수를 지정할 수 있다.

 

한가지 주의해야할 점은

비정형 인자도 다수의 인자와 함께 사용이 가능하지만 인자 선언부에서

비정형인자는 마지막에 단 한번만 사용할 수 있다.

 

public int add(String a, int... args) //올바른 선언(O)
public int add(int... args, String a) //잘못된 선언(X), 비정형인자가 마지막이 아님
public int add(int... args, String... a) //잘못된 선언(X), 비정형인자가 두번 사용됨

 

 

댓글 없음:

댓글 쓰기