이 메소드 서명에서 줄임표 (…)는 무엇입니까?
에서 앱 엔진 문서 , 줄임표 (무엇 JID...
이 방법 서명에 대한)은?
public MessageBuilder withRecipientJids(JID... recipientJids)
이 세 점의 기능은 무엇입니까?
그것들은 Java varargs입니다. 특정 유형의 객체 (이 경우 JID 유형)를 여러 개 전달할 수 있습니다.
귀하의 예에서 다음 함수 호출이 유효합니다.
MessageBuilder msgBuilder; //There should probably be a call to a constructor here ;)
MessageBuilder msgBuilder2;
msgBuilder.withRecipientJids(jid1, jid2);
msgBuilder2.withRecipientJids(jid1, jid2, jid78_a, someOtherJid);
자세한 내용은 여기를 참조하십시오 : http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
메소드 내 에서 줄임표 또는 varargs 를 사용하는 방법은 마치 마치 배열 인 것입니다.
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
이 메소드는 다음과 같이 호출 할 수 있습니다.
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
내부 PrintWithEllipsis
에서 유형 setOfStrings
은 문자열 배열입니다. 따라서 컴파일러에 약간의 작업을 저장하고 배열을 전달할 수 있습니다.
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
들면 가변 인자 방법, 시퀀스 파라미터는 동일한 유형의 배열 인 것으로 취급된다. 따라서이 예제에서와 같이 두 시그니처가 시퀀스 하나만 선언하고 다른 하나는 배열을 선언한다는 점만 다릅니다.
void process(String[] s){}
void process(String...s){}
컴파일 타임 오류가 발생합니다.
출처 : 기술 용어가 공통 용어 가 아닌 Java 프로그래밍 언어 사양 .variable arity parameter
varargs
세 점 (...) 표기법은 실제로 수학에서 빌려온 것으로 "... 등"을 의미합니다.
Java에서 사용하는 경우을 의미합니다 varargs
. 즉, 메소드 호출에 여러 개의 인수를 추가 할 수 있습니다. 유일한 제한은 varargs
메소드 서명의 끝에 있어야하며 메소드 당 하나만있을 수 있다는 것입니다.
그것들은 varargs
많은 수의 인수를받는 메소드를 만드는 데 사용됩니다.
예를 들어 PrintStream.printf 메소드는 사용할 인수가 몇 개인 지 모르기 때문에이 메소드를 사용합니다.
인수의 최종 위치로만 사용할 수 있습니다.
varargs
Java 1.5 에 추가되었습니다
이는 메소드 가 유형 의 가변 개수의 인수 ( "varargs")를 허용 함을 의미합니다 JID
. 방법 내에서 recipientJids
제시됩니다.
이 방법은 선택적으로 둘 이상의 인수를 자연스럽게 처리 할 수있는 메소드에 유용하며 작성의 추함없이 하나, 둘 또는 세 개의 매개 변수를 동일한 메소드에 전달할 수있는 호출을 작성할 수 있습니다. 즉시 배열.
또한 sprintf
C 와 같은 관용구를 가능하게합니다 . String.format()
예를 들어 참조하십시오 .
참고 URL : https://stackoverflow.com/questions/2367398/what-is-the-ellipsis-for-in-this-method-signature
'Programming' 카테고리의 다른 글
각도 JS에서 이중 및 단일 중괄호의 차이점은 무엇입니까? (0) | 2020.05.13 |
---|---|
Chrome 개발자 도구 : CSS 규칙을 재정의하는 것이 무엇인지 찾는 방법은 무엇입니까? (0) | 2020.05.13 |
SQLite 데이터베이스 파일에 가장 적합한 확장자는 무엇입니까? (0) | 2020.05.13 |
Java에서 언제 varargs를 사용합니까? (0) | 2020.05.13 |
React에서 자녀의 상태에 액세스하는 방법? (0) | 2020.05.13 |