반응형

기존에는 메서드의 매개변수의 개수가 고정적이었다.

 

하지만 jdk1.5부터는 동적으로 가능하고, 가변인자라고 부른다.

 

그럼 가변인자가 무엇인지 보자.

 

class Test{
    public void test(String test, Object... args){}
}

위 와 같이 Object... 으로 사용한다. 

단, 마지막 매개변수 자리에 선언해야한다.

그렇지 않은 경우에는 컴파일 에러가 발생한다.

 

왜?

마지막 매개변수가 아닌 경우 구별 방법이 없기 때문이다.

 

그럼 어떤 경우일때 사용할까?

class Test{
    public void test(String test){}                              // 1
    public void test(String test1, String test2){}               // 2
    public void test(String test1, String test2, String test3){} // 3
    
    public void test(String...  args){}                          // 4
    
    test();
    test("a");
    test("a", "b");
    test(new String[] {"a","b","c"});
}


///console///

[]
[a]
[a, b]
[a, b, c]

위 와 같이 1~3번의 메서드는 여러개의 매개변수를 필요로 하며, 4번의 메서드와 같이 사용할 수 있다.

 

그럼 어떻게 호출하면 될까?

 

4번 아래의 메서드 실행코드와 같이 사용하면 되고, 매개변수로 보내는게 없더라도 호출이 가능하다.

결과는 배열로 생성이 된다.

 

그럼 가변인자의 경우 내부적으로 배열로 처리를 한다는데!

class Test{
    public void test(String[] test){} 
}

위 와 같이 배열로 받으면?

 

매개변수 없이 메서드 호출이 안된다.

null이나 길이가 0인 배열을 인자로 지정해주어야 한다.

반응형