Soru java: herhangi bir sayıdaki parametreyi destekleyen bir işlevi nasıl oluşturabilirim?


java'da herhangi bir sayıdaki parametreyi destekleyen ve daha sonra fonksiyona sağlanan her bir parametrede yinelemeyi mümkün kılan bir fonksiyon yaratmak mümkün mü?

Teşekkürler

Kfir


22
2017-11-18 14:18


Menşei




Cevaplar:


Java Varargs.

Bunun gibi...

public void func(String ... strings) {
    for (String s : strings)
         System.out.println(s);
}

Değişken argümanlara izin verirken, bir işleve bazı minimum sayıda argümanın aktarılmasını gerektirmek istiyorsanız, bunun gibi bir şey yapmalısınız. Örneğin, en az bir dizeye ve ardından bir değişken uzunluk argümanı listesine ihtiyaç duyan bir işleviniz varsa:

public void func2(String s1, String ... strings) {

}

39
2017-11-18 14:20



müthiş! Detaylı açıklama için teşekkürler :) - ufk
argümanın türünü bilmiyorsam? sadece Object kullanabilir miyim? - ufk
Evet yapabilirsin... - aioobe
@ufk - aiiobe'nin dediği gibi, bunu yapabilirsin. Ama türünü kontrol etme ve ihtiyacınız olan herhangi bir şeyi yapma işini üstlenmelisiniz. Bloch yazdığı gibi Etkili Java, mantıklı olarak varargs kullanın. :) - wkl
@trusktr Evet, bir func(Object... args) Değişken sayıda jeneriği desteklemek için imza Object. İşlevi bir ilkelden geçirdiyseniz, karşılık gelen sarmalayıcı sınıfına otomatik olarak kaydedilir. çağrı func(1,2,3.0) ilk iki argümanı otomatik olarak Integerve üçüncü içine Double. - wkl


Diğerleri işaret ettiği gibi Varargs kullanabilirsiniz:

void myMethod(Object... args) 

Bu aslında eşdeğerdir:

void myMethod(Object[] args) 

Aslında derleyici, ilk formu ikinciye dönüştürür - bayt kodunda bir fark yoktur. Tüm argümanlar aynı tipte olmalıdır, bu yüzden farklı türlerde argümanlar kullanmak istiyorsanız, bir Object tipi kullanmanız ve gerekli dökümü yapmanız gerekir.


6
2017-11-18 14:25





Evet, kullanarak varargs.


5
2017-11-18 14:19