2012-01-28 3 views
14

숙제를위한 API를 구현해야하고 강사가 API (javadoc 기반)의 메소드 중 하나에 익숙하지 않은 표기법을 사용했습니다.String ... Java의 매개 변수

public void method(String... strs); 

'...'은 무엇을 의미합니까? 나중에 다중 문자열 실제 매개 변수뿐만 아니라 단일 문자열 실제 매개 변수를 사용하여이 동일한 메서드를 호출해야하는 것처럼 보입니다 ...

Java에는 선택 인수가 없습니다 (필자의 지식에 따라). 여기 조금 혼란 스럽네요 ...

답변

26

varargs라고 불립니다. http://docs.oracle.com/javase/6/docs/technotes/guides/language/varargs.html

이는 임의의 수의 인수를 메서드에 전달할 수 있음을 의미합니다 (0조차도).

이 메서드에서 인수는 자동으로 지정된 형식의 배열에 저장되며 각 인수에 액세스하는 데 사용됩니다.

+0

아, 빠른 응답에 감사드립니다. 나는 이것을 전에 보지 못했다. .. 매우 멋지다. –

+0

난 그냥 ** variadic **이 함수의 유형을 추가 할 것이라고 : http://en.wikipedia.org/wiki/Variadic_function – amphibient

4

예, 즉,이 메소드의 인수로 임의의 문자열을 취할 수 있습니다. 당신의 방법

:

public void method(String... strs); 

당신은 그것을 호출 할 수 있습니다 :

method(str) 
method(str1, str2) 
method(str1,str2,str3) 

모든 arugments 전혀 작동하지 않을 것이다. 다른 세계에서는 다음과 같이 대체됩니다.

+0

어, 아니, 그렇지 않아 (당신은 절반 맞아요 - 첫 문장 문제입니다.) –

+0

@BrianRoach, 오 그래 네가 맞아 미안 하구나. – Johnydep

+0

varargs의 최대 인수 수를 찾지 못했다. 다시 돌아와서 고치기 위해 3 개 이상인 – Kennet

관련 문제