Szukaj…


Uwagi

Argument metody „varargs” pozwala wywołującym tej metody określić wiele argumentów wskazanego typu, każdy jako osobny argument. Jest określony w deklaracji metody przez trzy okresy ASCII ( ... ) po typie podstawowym.

Sama metoda odbiera te argumenty jako pojedynczą tablicę, której typem elementu jest typ argumentu varargs. Tablica jest tworzona automatycznie (chociaż osoby wywołujące nadal mogą przekazywać jawną tablicę zamiast przekazywać wiele wartości jako osobne argumenty metody).

Zasady dotyczące varargs:

  1. Varargs musi być ostatnim argumentem.
  2. W metodzie może być tylko jeden Varargs.

Musisz przestrzegać powyższych zasad, w przeciwnym razie program wyświetli błąd kompilacji.

Określanie parametru varargs

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

Trzy okresy po typie końcowego parametru wskazują, że końcowy argument może być przekazany jako tablica lub jako sekwencja argumentów. Varargs można stosować tylko w końcowej pozycji argumentu.

Praca z parametrami Varargs

Używając varargs jako parametru w definicji metody, można przekazać tablicę lub sekwencję argumentów. Jeśli sekwencja argumentów zostanie przekazana, są one automatycznie konwertowane na tablicę.

W tym przykładzie pokazano zarówno tablicę, jak i sekwencję argumentów przekazywanych do metody printVarArgArray() oraz sposób, w jaki są one traktowane identycznie w kodzie wewnątrz metody:

public class VarArgs {
    
    // this method will print the entire contents of the parameter passed in
    
    void printVarArgArray(int... x) {
        for (int i = 0; i < x.length; i++) {
            System.out.print(x[i] + ",");
        }
    }
    
    public static void main(String args[]) {
        VarArgs obj = new VarArgs();
        
        //Using an array:
        int[] testArray = new int[]{10, 20};
        obj.printVarArgArray(testArray); 
       
        System.out.println(" ");
        
        //Using a sequence of arguments
        obj.printVarArgArray(5, 6, 5, 8, 6, 31);
    }
}

Wynik:

10,20, 
5,6,5,8,6,31

Jeśli zdefiniujesz taką metodę, spowoduje to błędy w czasie kompilacji.

void method(String... a, int... b , int c){} //Compile time error (multiple varargs )

void method(int... a, String b){} //Compile time error (varargs must be the last argument 


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow