답변:
그것들은 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
…
인 Unicode U + 2026을 사용해 보았습니다 . Java 8의 NetBeans 8은 "잘못된 문자"를보고합니다. 따라서 Java varargs에는 3 배 FULL STOP (마침표)이 필요합니다...
.