이 메서드는 지정된 자료형의 인자를 0개 이상 받을 수 있다. 동작 원리는 이렇다. 우선, 클라이언트에서 전달한 인자 수에 맞는 배열이 자동 생성되고, 모든 인자가 해당 배열에 대입된다. 그리고 마지막으로 해당 배열이 메서드에 인자로 전달된다. 


 위와 같은 메소드를 이용해 int 인자들을 받아서 합계를 구하는 메소드를 간단하게 구현할 수 있다. 그러나 때로는 하나 이상의 인자를 받을 수 있는 메서드를 구현하고 싶을 때가 있는데, 이런 메소드의 경우 인자를 하나이상의 값 인자와 , 배열인자 총 2개의 인자를 가진 메서드를 정의하면 된다. 
 하지만 다른 메서드가 위와 같은 형태( 인자1 , 배열 )로 마지막 인자가 배열을 받는다고 해서 모두다 가변인자로 바꿀 생각을 하면 안된다. varargs는 정말로 임의 개수의 인자를 처리할 수 있는 메서드를 만들어야 할 때만 사용해야 한다.

 성능이 중요한 곳에서도 varargs의 사용은 조심해야 한다. varargs 메서드를 호출할 때마다 배열이 만들어지고 초기화되기 때문이다.

요약

varargs 메서드는 인자 개수가 가변적인 메서드를 정의할 때 편리하지만, 남용되면 곤란하다. 부적절하게 사용되면 혼란스러운 결과를 초래할 수 있다.  


+ Recent posts