ในApp Engine docsจุดไข่ปลา ( JID...
) สำหรับลายเซ็นวิธีนี้คืออะไร?
public MessageBuilder withRecipientJids(JID... recipientJids)
ฟังก์ชั่นของสามจุดเหล่านั้นคืออะไร?
ในApp Engine docsจุดไข่ปลา ( 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);
สำหรับวิธีการvarargsพารามิเตอร์ลำดับจะถือว่าเป็นอาร์เรย์ประเภทเดียวกัน ดังนั้นถ้าสองลายเซ็นแตกต่างกันเฉพาะในที่หนึ่งประกาศลำดับและอื่น ๆ อาร์เรย์เช่นในตัวอย่างนี้:
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()
ตัวอย่าง
…
, Unicode U + 2026 NetBeans 8 ใน Java 8 รายงานว่า "อักขระผิดกฎหมาย" ดังนั้น Java varargs ต้องสามหยุดเต็ม...
(ระยะเวลา)