1. 가변 인자
(1) 아래와 같은 "타입... 변수명"과 같은 형식으로 선언하며, PrintStream 클래스의 printf()가 대표적인 예이다.
public PrintStream printf(String format, Object... args) { ... }
(2) 가변 인자 외에도 더 추가할 매개변수가 있다고 한다면, 맨 뒤에 가변 인자를 두어야 한다.
(3) 아래의 함수와 같이 앞에 가변인자를 두게 되면 컴파일 에러가 발생한다.
public PrintStream printf(Object... args, String format) { ... }
2. 예제 - 가변 인자를 활용하여 오버로딩 구현
( 위 예제는 오버로딩을 구현했는데, 계속 해서 매개변수를 String으로 늘린다면, 차라리 String a(String... str)
로 줄여서 바꾸는 것이 가독성에 좋다. )
( 위의 형식처럼 가변인자를 매개변수로 사용한다면, 호출하는 입장에서 인자가 없음 또는 인자가 하나, 인자가 여러
개까지도 가능하며, 심지어 배열도 가능하다. )
( 단, 배열은 전달할 때 파라미터로 배열 하나만 넣을 수 있다. )
( 아래의 코드를 통해 이해하자. )
3. 잘못된 예제
( 가변인자에 오버로딩까지 구현하였다. )
( 그러나, 오류가 발생하였는데, 그 이유는 어떤 메서드를 호출해야 할지 컴파일러가 모르기 때문이다. )
( 그래서 가급적이면 가변인자를 쓴 메서드를 오버로딩까지 구현하는 것은 피해야 한다. )
'자바 > 기본적인 개념' 카테고리의 다른 글
초기화 블럭 (0) | 2021.01.08 |
---|---|
생성자 (0) | 2021.01.07 |
오버 로딩 (0) | 2021.01.07 |
클래스 맴버와 인스턴스 맴버간의 참조와 호출 (0) | 2021.01.07 |
클래스 메서드(static 메서드)와 인스턴스 메서드 (0) | 2021.01.07 |