App Engine docs에서이 메서드 서명에 대한 줄임표 (JID...
)는 무엇입니까?이 메소드 서명에 대한 줄임표 (...)는 무엇입니까?
public MessageBuilder withRecipientJids(JID... recipientJids)
이 세 점의 기능은 무엇입니까?
App Engine docs에서이 메서드 서명에 대한 줄임표 (JID...
)는 무엇입니까?이 메소드 서명에 대한 줄임표 (...)는 무엇입니까?
public MessageBuilder withRecipientJids(JID... recipientJids)
이 세 점의 기능은 무엇입니까?
이들은 Java 가변 인수입니다. 그들은 특정 유형의 객체를 여러 개 전달할 수 있습니다 (이 경우 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
인수는 JID의 배열로 전달 될 수도 있습니다 (이것은 varargs의 역방향 호환을 가능하게합니다). – mjn
또한 0 개의 varargs (nothing)을 전달하는 것은 합법적입니다. –
마지막으로, vararg는 메소드의 마지막 매개 변수 여야합니다. 따라서 동일한 메소드에서 두 개의 vararg 매개 변수를 가질 수 없습니다. 어쩌면이 방법이 흥미 롭다는 것을 알 수 있습니다. http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList%28T...%29 – BlackBrain
그것은 방법은 유형 JID
의 variable number of arguments ("변수 인수")를 받아들이는 것을 의미한다. 방법 내에서 recipientJids
이 표시됩니다.
자연스럽게 두 개 이상의 인수를 선택적으로 처리 할 수있는 방법을 사용하는 경우에 유용하며 하나 또는 두 개의 매개 변수를 동일한 메소드에 전달할 수있는 호출을 작성할 수 있습니다. 즉석에서 배열을 만드는 추함.
또한 sprintf
과 같은 숙어를 C에서 사용할 수 있습니다. 예를 들어 String.format()
을 참조하십시오.
이들은 varargs
이며 모든 인수를받는 방법을 만드는 데 사용됩니다.
예를 들어, PrintStream.printf 메서드는 사용하는 인수의 개수를 모르기 때문에이를 사용합니다.
인수의 최종 위치로만 사용할 수 있습니다.
varargs
는 Java 1.5
점 3 (...)가 실제로 수학 표기법에서 차용에 첨가하고, 그것을 "등등 .. 그리고"를 의미 하였다.
Java에서의 사용은 varargs
의 약자이며, 메서드 호출에 원하는 수의 인수를 추가 할 수 있습니다. 유일한 제한은 varargs
이 메소드 서명의 끝에 있어야하며 메소드 당 하나만있을 수 있다는 것입니다.
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
내부를 :
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
이 메소드는 다음과 같이 호출 할 수 있습니다 : 그것은 배열처럼
또는 메소드 내부을 변수 인수 줄임표를 사용하는 방법은 PrintWithEllipsis
인 경우 setOfStrings
유형은 String의 배열입니다. 그래서 당신은 컴파일러에게 약간의 작업을 저장하고 배열을 전달할 수 : 를 들어
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
은 일련의 매개 변수가 동일한 유형의 배열 것으로 처리됩니다 방법을 가변 인자.
void process(String[] s){}
void process(String...s){}
다음 컴파일시 오류가 발생하는 두 개의 서명이 하나의 예에서와 같이, 일련의 다른 배열을 선언 만 다를 경우에 따라서.
출처 : The Java Programming Language 사양 여기서 기술 용어는 varargs
이 아닌 variable arity parameter
입니다.
+1 대 배열 생략 메소드 서명 비트. – aspen100
메소드에서 가변 인수 (varargs)를 허용 할 수있는 매개 변수를 정의 할 수 있습니다. 가변 인수를 받아들이는 방법 daysOffWork 정의 클래스 직원의 예를 다음
class Employee {
public int daysOffWork(int... days) {
int daysOff = 0;
for (int i = 0; i < days.length; i++) {
daysOff += days[i];
}
return daysOff;
}
}
데이터 유형을 다음 줄임표 (...)은
일가 전달 될 수있어서 파라미터 것을 나타낸다
배열 또는 여러 개의 쉼표로 구분 된 값.
그건 그렇고, 나는 HORIZONTAL ELLIPSIS 문자 '...', 유니 코드 U + 2026을 시도했다. Java 8의 NetBeans 8은 "불법 문자"를보고합니다. 따라서 Java 가변 인수에는 트리플 완전 정지 (마침표), '...'가 필요합니다. –