Yöntem imzasında Java “parametreleri”?


112

C # 'da, bir yöntemin belirsiz sayıda parametresine sahip olmasını istiyorsanız, yöntem imzasındaki son parametreyi a yapabilirsiniz, paramsböylece yöntem parametresi bir dizi gibi görünür, ancak yöntemi kullanan herkesin bu türden birçok parametre geçirmesine izin verir. arayanın istediği gibi.

Java'nın benzer davranışları desteklediğinden oldukça eminim, ancak nasıl yapılacağını bulamıyorum.

Yanıtlar:


194

Java'da buna varargs denir ve sözdizimi normal bir parametre gibi görünür, ancak aşağıdaki türden sonra bir üç nokta ("...") vardır:

public void foo(Object... bar) {
    for (Object baz : bar) {
        System.out.println(baz.toString());
    }
}

Vararg parametre gereken zaman olarak son yöntem imzası parametresi ve (örneğin, bu tür bir dizi alınan gibi erişilen Object[]bu durumda).


3
Teşekkürler, bunu başka bir şeye bakarken kendim de garip bir şekilde buldum ve buraya soruyu kendim cevaplamaya geliyordum.
Omar Kooheji

11

Bu, Java'daki hile yapacak

public void foo(String parameter, Object... arguments);

Üç nokta eklemelisiniz ...ve varagrparametrenin yöntemin imzasında son olması gerekir.


3

Önceki cevaplar yazılır gibi, olduğu varargsve birlikte beyan ellipsis( ... )

Ayrıca, değer türlerini ve / veya referans türlerini veya her ikisini birden (google Otomatik Kutu ) iletebilirsiniz . Ek olarak, printArgsAlternateaşağıdaki yöntemle gösterildiği gibi, yöntem parametresini bir dizi olarak kullanabilirsiniz .

Demo Kodu

public class VarargsDemo {

    public static void main(String[] args) {
        printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
        printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
    }

    private static void printArgs(Object... arguments) {
        System.out.print("Arguments: ");
        for(Object o : arguments)
            System.out.print(o + " ");

        System.out.println();
    }

    private static void printArgsAlternate(Object... arguments) {
        System.out.print("Arguments: ");

        for(int i = 0; i < arguments.length; i++)
            System.out.print(arguments[i] + " ");

        System.out.println();
    }

}

Çıktı

Arguments: 3 true Hello! true 25.3 a X 
Arguments: 3 true Hello! true 25.3 a X 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.