Dalam dokumen App Engine , untuk apa ellipsis ( JID...
) dalam tanda tangan metode ini?
public MessageBuilder withRecipientJids(JID... recipientJids)
Apa fungsi dari ketiga titik itu?
Dalam dokumen App Engine , untuk apa ellipsis ( JID...
) dalam tanda tangan metode ini?
public MessageBuilder withRecipientJids(JID... recipientJids)
Apa fungsi dari ketiga titik itu?
Jawaban:
Itu adalah Java varargs. Mereka membiarkan Anda melewati sejumlah objek dari tipe tertentu (dalam hal ini mereka adalah tipe JID).
Dalam contoh Anda, panggilan fungsi berikut akan valid:
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);
Lihat lebih lanjut di sini: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Cara menggunakan ellipsis atau varargs di dalam metode adalah seolah-olah array:
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
Metode ini dapat disebut sebagai berikut:
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
Di dalam PrintWithEllipsis
, jenis setOfStrings
adalah array dari String. Jadi Anda bisa menyimpan beberapa pekerjaan kompiler dan melewatkan array:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
Untuk metode varargs , parameter urutan diperlakukan sebagai array dengan tipe yang sama. Jadi, jika dua tanda tangan berbeda hanya dalam satu yang menyatakan urutan dan yang lainnya merupakan array, seperti dalam contoh ini:
void process(String[] s){}
void process(String...s){}
kemudian kesalahan waktu kompilasi terjadi.
Sumber: Spesifikasi Bahasa Pemrograman Java , di mana istilah teknisnya variable arity parameter
bukan istilah umum varargs
.
Notasi tiga titik (...) sebenarnya dipinjam dari matematika, dan itu berarti "... dan seterusnya".
Adapun penggunaannya di Jawa, itu singkatan varargs
, yang berarti bahwa sejumlah argumen dapat ditambahkan ke pemanggilan metode. Satu-satunya batasan adalah bahwa varargs
harus di akhir tanda tangan metode dan hanya ada satu per metode.
Itu adalah varargs
mereka digunakan untuk membuat metode yang menerima sejumlah argumen.
Misalnya metode PrintStream.printf menggunakannya, karena Anda tidak tahu berapa banyak argumen yang akan Anda gunakan.
Mereka hanya dapat digunakan sebagai posisi akhir dari argumen.
varargs
telah ditambahkan di Java 1.5
Ini berarti bahwa metode menerima sejumlah variabel argumen ("varargs") dari tipe JID
. Dalam metode, recipientJids
disajikan.
Ini berguna untuk kasus di mana Anda memiliki metode yang secara opsional dapat menangani lebih dari satu argumen dengan cara alami, dan memungkinkan Anda untuk menulis panggilan yang dapat melewati satu, dua atau tiga parameter ke metode yang sama, tanpa memiliki keburukan dalam menciptakan sebuah array dengan cepat.
Ini juga memungkinkan idiom seperti sprintf
dari C; lihat String.format()
, misalnya.
…
,, Unicode U + 2026. NetBeans 8 di Java 8 melaporkan "karakter ilegal". Jadi Java varargs memerlukan triple FULL STOP (periode)...
,.