Zoeken…


Opmerkingen

Met een methodeargument 'varargs' kunnen bellers van die methode meerdere argumenten van het opgegeven type opgeven, elk als een afzonderlijk argument. Het wordt in de methodeverklaring gespecificeerd door drie ASCII-periodes ( ... ) na het basistype.

De methode zelf ontvangt die argumenten als een enkele array, waarvan het elementtype het type van het varargs-argument is. De array wordt automatisch gemaakt (hoewel bellers nog steeds een expliciete array mogen doorgeven in plaats van meerdere waarden door te geven als afzonderlijke methodeargumenten).

Regels voor varargs:

  1. Varargs moet het laatste argument zijn.
  2. De methode kan slechts één Varargs bevatten.

U moet bovenstaande regels volgen, anders geeft het programma een compilatiefout.

Een varargs-parameter opgeven

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

De drie perioden na het type van de laatste parameter geven aan dat het laatste argument kan worden doorgegeven als een array of als een reeks argumenten. Varargs kan alleen worden gebruikt in de laatste argumentpositie.

Werken met Varargs-parameters

Met varargs als parameter voor een methodedefinitie is het mogelijk om een array of een reeks argumenten door te geven. Als een reeks argumenten wordt doorgegeven, worden deze automatisch omgezet in een array.

Dit voorbeeld toont zowel een array als een reeks argumenten die worden doorgegeven aan de methode printVarArgArray() en hoe ze op dezelfde manier worden behandeld in de code in de methode:

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

Output:

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

Als u de methode als volgt definieert, geeft dit compilatietijdfouten.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow