Sök…


Anmärkningar

Ett "varargs" -metodargument gör det möjligt för anropare av den metoden att specificera flera argument av den angivna typen, var och en som ett separat argument. Det anges i metoddeklarationen av tre ASCII-perioder ( ... ) efter bastypen.

Metoden i sig tar emot dessa argument som en enda matris, vars elementtyp är typen av varargs-argumentet. Array skapas automatiskt (även om samtal fortfarande har tillåtelse att skicka en uttrycklig matris istället för att skicka flera värden som separata metodargument).

Regler för varargs:

  1. Varargs måste vara det sista argumentet.
  2. Det kan bara finnas en Varargs i metoden.

Du måste följa reglerna ovan, annars kommer programmet att ge kompileringsfel.

Ange en parameter för varargs

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

De tre perioderna efter den slutliga parameterns typ indikerar att det slutliga argumentet kan skickas som en matris eller som en sekvens av argument. Varargs kan endast användas i den slutliga argumentpositionen.

Arbeta med parametrarna för Varargs

Med varargs som en parameter för en metoddefinition är det möjligt att passera antingen en matris eller en sekvens av argument. Om en sekvens av argument skickas om, konverteras de automatiskt till en matris.

Detta exempel visar både en matris och en sekvens av argument som skickas in i printVarArgArray() och hur de behandlas identiskt i koden inuti metoden:

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);
    }
}

Produktion:

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

Om du definierar metoden så här kommer den att ge kompileringstidsfel.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow