반응형
java에서 parameter개수와 타입을 다르게 해서 같은 기능을 하는 메소드를 동일한 메소드명으로 사용할 수 있다.(오버로딩)
@Slf4j
public class Test {
public void print(String str) {
log.info("str = [{}]", str);
}
public void print(int num) {
log.info("num = [{}]", num);
}
}
하지만 parameter의 개수를 가변적으로 사용하고 싶을 땐?
Test test = new Test();
//이렇게 호출하고 싶을 때..
test.print(1);
test.print(1, 2);
test.print(1, 2, 3);
test.print(1, 2, 3, 4);
test.print(1, 2, 3, 4, 5);
test.print(1, 2, 3, 4, 5, 6);
오버로딩을 계속 해야 되나? 🙄
이 때 사용할 수 있는 게 가변적 인자(데이터 타입... 변수명)이고 jdk 1.5이상부터 지원된다.
public class Test {
//int타입 가변인자 사용(데이터 타입 ... 변수명)
public static void print(int... numbers) {
for (int num : numbers) {
log.info("numbers = [{}]", num);
}
}
public static void main(String[] args) {
printNumbers(1, 2, 3); // 가변인자로 여러 개의 인자 전달
printNumbers(10, 20, 30, 40, 50);
printNumbers(); // 아무 인자도 전달하지 않아도 됨
}
}
코드를 보면 알겠지만 내부적으로는 배열로 처리되기 때문에 전달하는 인자의 타입은 동일해야 한다.
개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.
반응형
'IT > development' 카테고리의 다른 글
[Git] Git Branching Strategy(feat. 브랜치 전략) (66) | 2023.08.24 |
---|---|
[springBoot] 엑셀파일 읽기(feat. ajax) (62) | 2023.08.23 |
[springBoot] daum SMTP 메일 발송 (43) | 2023.08.22 |
[github] github 웹 vs code 사용 (0) | 2023.08.17 |
[Vue.js] Vue.js 첨부파일 업로드 (0) | 2023.08.13 |