在App Engine文档中,JID...
此方法签名中的省略号()是什么?
public MessageBuilder withRecipientJids(JID... recipientJids)
这三个点的作用是什么?
在App Engine文档中,JID...
此方法签名中的省略号()是什么?
public MessageBuilder withRecipientJids(JID... recipientJids)
这三个点的作用是什么?
Answers:
这些是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
在方法内部使用省略号或变量的方式就像是数组:
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的数组。因此,您可以为编译器节省一些工作并传递一个数组:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
对于varargs方法,将序列参数视为相同类型的数组。因此,如果两个签名仅在一个声明一个序列而另一个在声明一个数组方面有所不同,如本例所示:
void process(String[] s){}
void process(String...s){}
然后发生编译时错误。
资料来源:Java编程语言规范,其中的技术术语variable arity parameter
不是通用术语varargs
。
这些是varargs
它们用于创建接收任意数量参数的方法。
例如PrintStream.printf方法使用它,因为您不知道将使用多少个参数。
它们只能用作参数的最终位置。
varargs
是在Java 1.5上添加的
…
Unicode U + 2026。Java 8中的NetBeans 8报告“非法字符”。因此,Java varargs需要三重FULL STOP(句号)...
。