'varargs'에 해당되는 글 1건

  1. 2008/04/11 간략한 배열 초기화

간략한 배열 초기화

자바 2008/04/11 11:28 posted by 낭만검객
http://stuffthathappens.com/blog/2008/04/04/simplified-array-syntax/ 블로그에서 재밌는 내용을 발견해서 소개합니다.

객체 배열을 초기화할 때 대개 다음과 같은 형식으로 작성합니다.

String[] names = new String[] { "cybaek", "milk012", "cymilk012"};
하지만 Java5를 사용한다면, 가변길이 인자, 정적 메소드 임포트, 제네릭 기능을 이용하여 다음과 같이 색다르게 기술할 수 있습니다. (글자수는 확 늘었군요 -_-)

String[] names = LangUtils.array("cybaek", "milk012", "cymilk012");

public class LangUtils {
  public static <T> T[] array(T... t) {
    return t;
  }
}
이번에는 LangUtils.array() 부분의 글자수를 더 줄여보겠습니다.

import static LangUtils.array;
String[] names = array("cybaek", "milk012", "cymilk012");
import static 구문으로 메소드를 선언하면 해당 메소드 이름만 적어도 사용할 수 있습니다. 이런 스타일은 JUnit4 테스트케이스에서 많이 씁니다. 이젠 간단한게 array라는 메소드 이름만으로 손쉽게 객체 배열을 만들 수 있습니다.

하지만 이 방법은 '객체'만 배열로 만든다는 단점이 있습니다. 다음과 같은 코드는 동작하지 않습니다.

int[] ids = array(1, 2, 3);
박싱/언박싱 기능 덕에 다음 코드는 동작합니다.

Integer[] ids = array(1, 2, 3);
int 배열을 반환하려면 원시타입을 위한 별도 메소드를 만들 수 밖에 없습니다. 하지만 원시 타입이 몇 개 되지 않으니 충분히 할 만합니다.