Whiteship's Note

... 가변인수(varargs)

Java : 2006. 12. 11. 13:01


이것도 J2SE 5.0에 새로 추가된 기능 중에 하나로 "임의 개수의 인수를 받을 때" 사용합니다.

5.0  이전에서 임의의 갯수의 인자를 넘겨주고 싶을 때는  배열을 만들어서 넘겨주고 받는 쪽에서도 배열로 받아야 했습니다.

   @Test
   public void passArray(){
       int[] numbers1 = {1, 2, 3, 4, 5};
       int[] numbers2 = foo(numbers1);

       assertTrue(Arrays.equals(numbers1, numbers2));
   }

   private int[] foo(int[] numbers){
       return numbers;
   }

5.0 부터는 넘겨줄 때 배열을 만들어서 넘기지 않아도 받을 때 알아서 배열로 받아주는(물론 배열을 넘겨도 됩니다.) 가변인수 라는 것이 생겼습니다. 모양은 쩜 세 개 ... 이것입니다.


   @Test
   public void primitiveVargs(){
       int[] array1 = foo(1, 2, 3, 4, 5);  //배열을 만들지 않아도 넘어갑니다.
       int[] array2 = foo(array1);         //배열을 넘겨도 넘어갑니다.

       assertTrue(Arrays.equals(array1, array2));
   }

   private int[] foo(int... numbers) {    //가변인수를 사용했기 때문이지요.
       return numbers;
   }

private int[] foo(int... numbers) 이것과 private int[] foo(int[] numbers) 둘 다 존재하면 충돌이 일어납니다. 둘 중에 하나만 있어야 합니다. 가변인수도 일종의 배열이기 때문에 그런것 같습니다.



'Java' 카테고리의 다른 글

Hiding Method  (0) 2006.12.31
Overriding - covariant return type  (6) 2006.12.31
LinkedList vs ArrayList  (6) 2006.12.22
Agile Java 소스코드(10장까지..)  (8) 2006.12.21
Reflection  (0) 2006.12.19
... 가변인수(varargs)  (2) 2006.12.11
for each 구문 사용법  (0) 2006.12.11
JUnit Reloaded  (0) 2006.12.07
I/O Stream 구성  (0) 2006.12.07
Checked Exception VS Unchecked Exception  (0) 2006.12.01
냄새 나는 Switch 코드와 다형성  (3) 2006.11.30
top

  1. Favicon of http://epro.tistory.com BlogIcon epro 2007.08.08 19:51 PERM. MOD/DEL REPLY

    "..." 요놈의 이름이 가변인수였군요~!
    기선님 덕분에 문제 해결했어요 ㅋㅋ 고마워용~ ㅎㅎ

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2007.08.08 21:19 PERM MOD/DEL

    흐흣;; 네^^;;

Write a comment.




: 1 : ··· : 100 : 101 : 102 : 103 : 104 : 105 : 106 : 107 : 108 : ··· : 140 :