반응형
기존에는 메서드의 매개변수의 개수가 고정적이었다.
하지만 jdk1.5부터는 동적으로 가능하고, 가변인자라고 부른다.
그럼 가변인자가 무엇인지 보자.
class Test{
public void test(String test, Object... args){}
}
위 와 같이 Object... 으로 사용한다.
단, 마지막 매개변수 자리에 선언해야한다.
그렇지 않은 경우에는 컴파일 에러가 발생한다.
왜?
마지막 매개변수가 아닌 경우 구별 방법이 없기 때문이다.
그럼 어떤 경우일때 사용할까?
class Test{
public void test(String test){} // 1
public void test(String test1, String test2){} // 2
public void test(String test1, String test2, String test3){} // 3
public void test(String... args){} // 4
test();
test("a");
test("a", "b");
test(new String[] {"a","b","c"});
}
///console///
[]
[a]
[a, b]
[a, b, c]
위 와 같이 1~3번의 메서드는 여러개의 매개변수를 필요로 하며, 4번의 메서드와 같이 사용할 수 있다.
그럼 어떻게 호출하면 될까?
4번 아래의 메서드 실행코드와 같이 사용하면 되고, 매개변수로 보내는게 없더라도 호출이 가능하다.
결과는 배열로 생성이 된다.
그럼 가변인자의 경우 내부적으로 배열로 처리를 한다는데!
class Test{
public void test(String[] test){}
}
위 와 같이 배열로 받으면?
매개변수 없이 메서드 호출이 안된다.
null이나 길이가 0인 배열을 인자로 지정해주어야 한다.
반응형
'공부 > 과거 자료' 카테고리의 다른 글
[Javascript] 배열 확인 - isArray() (0) | 2022.07.29 |
---|---|
[Java] 생성자 (Constructor) (0) | 2022.07.28 |
[Java] Overloading이란 (0) | 2022.07.27 |
[Java] MultipartHttpServletRequest 다중 파일 업로드시 파일 체크 (0) | 2022.07.21 |
[MyBatis] update set에 모두 if 사용하기와 trim태그 (0) | 2022.07.21 |