java에서 파라미터를 전달하다 보면 아래와 같은 코드를 보신 적이 있으실 겁니다.
public void test(string... parameter) {
contents
}
저것은 가변인자로 말 그대로 여러 개의 매개변수를 받을 수 있다는 말 입니다.
오버로딩
자바에서는 파라미터 개수가 다르면 다른 메소드로 인식을 합니다.
동일한 기능을 하지만 파라미터가 가변적으로 변경되는 경우 오버로딩을 사용합니다.
그런데 오버로딩은 파라미터 개수에 맞춰 메소드가 계속 늘어나는 구조입니다.
// 파라미터가 한 개인 경우
public void search(String one) {}
// 파라미터가 두 개인 경우
public void search(String one, String two) {}
// 파라미터가 세 개인 경우
public void search(String one, String two, String three) {}
아니면 이런 케이스에서는 map, List, 배열 객체 등으로 파라미터를 전달하기도 하였습니다.
// Map을 사용하는 경우
public void search(Map<String, String> param) {}
// 배열을 사용하는 경우
public void search(String[] param) {}
// List를 사용하는 경우
public void search(List<String> param) {}
// VO객체를 사용하는 경우
public void search(ParamVO param) {}
가변인자
가변인자를 사용하면 동적으로 파라미터를 받을 수 있습니다.
사용법은 변수 타입 뒤에 기호(...)를 붙여주면 됩니다.
가변인자를 가지고 있는 메소드를 호출할 때는 아래 방법 모두 가능합니다.
public void callMethod() {
// 파라미터가 없음
test();
// 파라미터가 한개
test("A");
// 파라미터가 두개
test("A", "B");
// 배열로 전달
test(new String[]{"A", "B", "C"});
}
public void test(String... param) {
System.out.println("param: " + param);
}
다른 파라미터와 가변인자를 같이 사용하는 경우에는 가변인자를 제일 뒤에 위치 시켜야 합니다.
public void test2(String name, String... param) {
System.out.println("param: " + param);
}
'IT' 카테고리의 다른 글
[java8] stream을 이용하여 list 합치는 방법 (0) | 2021.02.20 |
---|---|
공공기관 문서 발급 시 발급 가능한 프린터가 없을 때? (feat. 모두의 프린터 사용법 리뷰) (1) | 2021.02.04 |
티스토리 구글 애드센스 신청 방법 & "사이트 검토 중" 해결 방법 (0) | 2021.01.30 |
querydsl 에서 subQuery 사용하는 방법 (0) | 2021.01.29 |
갤럭시 모션포토 설정 방법 및 카톡으로 공유하기 (0) | 2021.01.26 |