메서드를 작성하면서 매개변수의 개수를 제한하지 않고 사용하고 싶을 때가 있다. 같은 타입의 변수를 여러개 넣어야 하는 경우 길게 안 적고 편하게 작성하는 법이 없을까?
그래서 찾아봤다.
활용 방법
MethodName (Type... parameter) {}
//사용할 매개변수의 타입... 변수명
이렇게 입력해주면 이 메서드에 정하지 않은 개수의 같은 타입 parameter를 인수로 받겠다는 의미가 된다.
주의할 점은 입력할 때 parameter를 하나하나 손수 써서 입력했더라도, 메서드 내에서 parameter가 배열 형태의 데이터가 된다는 점이다.
String... str → str은 String[]
double... num → num은 double[]
그리고 매개변수가 여러 개 필요한 메서드일 때, 가변인수는 매개변수 중 제일 마지막에 위치해야 한다.
//가변인수는 항상 매개변수 중 마지막에 배치
public void form (int index, char c, String... str) {}
또 하나 주의해야 할 부분이 변수의 개수에 제한이 없다보니 단일 매개변수나 정해진 매개변수를 쓸 때보다 성능이 떨어질 수도 있다. 가변인수는 메서드가 호출될 때마다 배열 새로 할당하고 초기화한다.
유연성이 있어 활용에는 좋지만 리스크가 있기 때문에 상황에 맞게 쓰는 판단력이 필요하다.