In App Engine docs , üç nokta (nedir JID...
bu yöntem imzası için)?
public MessageBuilder withRecipientJids(JID... recipientJids)
Bu üç noktanın işlevi nedir?
In App Engine docs , üç nokta (nedir JID...
bu yöntem imzası için)?
public MessageBuilder withRecipientJids(JID... recipientJids)
Bu üç noktanın işlevi nedir?
Yanıtlar:
Bunlar Java varargs. Belirli bir türden herhangi bir sayıda nesneyi geçirmenize izin verir (bu durumda JID türündedirler).
Örneğinizde, aşağıdaki işlev çağrıları geçerli olacaktır:
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);
Buradan daha fazlasını görün: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Yöntemin içinde üç nokta veya varargs kullanmanın yolu, bir diziymiş gibi:
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
Bu yöntem şu şekilde çağrılabilir:
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
İçinde PrintWithEllipsis
, türü setOfStrings
bir String dizesidir. Böylece derleyiciye biraz iş kaydedebilir ve bir dizi geçirebilirsiniz:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
İçin varargs yöntem, bir dizi parametre aynı tipte bir dizi olarak işlenir. Dolayısıyla, iki imza yalnızca bir örnek bir dizi ve diğeri bir dizi bildirirse farklıysa, bu örnekte olduğu gibi:
void process(String[] s){}
void process(String...s){}
bir derleme zamanı hatası oluşur.
Kaynak: Teknik terimin ortak terim yerine Java Programlama Dili belirtimi .variable arity parameter
varargs
Üç nokta (...) notasyonu aslında matematikten ödünç alınır ve "... vb." Anlamına gelir.
Java'da kullanımına gelince varargs
, yöntem çağrısına herhangi bir sayıda argüman eklenebileceği anlamına gelir. Tek sınırlama varargs
, yöntem imzasının sonunda olması gerektiğidir ve her yöntem için yalnızca bir tane olabilir.
Bunlar, varargs
herhangi bir sayıda argüman alan bir yöntem oluşturmak için kullanılırlar.
Örneğin, PrintStream.printf yöntemi bunu kullanır, çünkü ne kadar bağımsız değişken kullanacağınızı bilmiyorsunuzdur.
Bunlar yalnızca argümanların son konumu olarak kullanılabilir.
varargs
Java 1.5'e eklendi
Bu, yöntemin değişken sayıda argümanı ("varargs") kabul ettiği anlamına gelir JID
. Yöntem dahilinde recipientJids
sunulmaktadır.
Bu, isteğe bağlı olarak birden fazla bağımsız değişkeni doğal bir şekilde işleyebilecek bir yönteminiz olduğu ve oluşturmanın çirkinliğine sahip olmadan aynı yönteme bir, iki veya üç parametre iletebilen çağrılar yazmanıza izin veren durumlar için kullanışlıdır. anında bir dizi.
Ayrıca sprintf
C'den gelen deyimleri ; String.format()
örneğin bkz .
…
, Unicode U + 2026'yı denedim . Java 8'deki NetBeans 8 "geçersiz karakter" bildiriyor. Java varargs için üçlü TAM DURDURMA (nokta) gerekir...
.