Değişken sayıda parametreye izin verecek bir yöntem bildirmek mümkün müdür?
Yöntemin değişken sayıda parametreye izin vermesi gerektiğini belirten tanımda kullanılan sembolizm nedir?
Cevap: varargs
Değişken sayıda parametreye izin verecek bir yöntem bildirmek mümkün müdür?
Yöntemin değişken sayıda parametreye izin vermesi gerektiğini belirten tanımda kullanılan sembolizm nedir?
Cevap: varargs
Yanıtlar:
Bu doğru. Varargs'daki Oracle kılavuzunda bununla ilgili daha fazla bilgi bulabilirsiniz .
İşte bir örnek:
void foo(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
hangisi olarak adlandırılabilir
foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.
Object...
.
Object... args
nedeniyle ilkellerle çalışacaktır .
varargs.length
Variable number of arguments
Bir yönteme değişken sayıda argüman iletmek mümkündür. Ancak bazı kısıtlamalar vardır:
Bu kısıtlamaları anlamak için, aşağıdaki kod parçacığında bir tamsayı listesindeki en büyük tamsayıyı döndürmek için kullanılan yöntemi göz önünde bulundurun:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
kaynak Oracle Certified Associate Java SE 7 Programcı Çalışma Kılavuzu 2012
Farklı argüman türleri için 3 nokta vardır :
public void foo(Object... x) {
String myVar1 = x.length > 0 ? (String)x[0] : "Hello";
int myVar2 = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
O zaman ara
foo("Hii");
foo("Hii", 146);
güvenlik için şu şekilde kullanın:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
Bu yaklaşımın ana dezavantajı, isteğe bağlı parametreler farklı türdeyse statik tür denetimini kaybetmenizdir. Lütfen daha fazla varyasyona bakın .
Evet ... Java 5'ten beri: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Evet Java, vargs
yöntem parametresine izin verir .
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}