Поиск…


замечания

Аргумент метода «varargs» позволяет вызывающим сторонам этого метода указывать несколько аргументов назначенного типа, каждый из которых является отдельным аргументом. Он указан в объявлении метода тремя периодами ASCII ( ... ) после базового типа.

Сам метод получает эти аргументы как один массив, тип элемента которого является типом аргумента varargs. Массив создается автоматически (хотя вызывающим абонентам по-прежнему разрешено передавать явный массив вместо передачи нескольких значений в виде отдельных аргументов метода).

Правила для варгаров:

  1. Варанг должен быть последним аргументом.
  2. В методе может быть только один Varargs.

Вы должны следовать выше правилам, иначе программа даст ошибку компиляции.

Указание параметра varargs

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

Три периода после окончательного параметра указывают, что последний аргумент может быть передан как массив или как последовательность аргументов. Варгары могут использоваться только в конечной позиции аргумента.

Работа с параметрами Varargs

Используя varargs в качестве параметра для определения метода, можно передать либо массив, либо последовательность аргументов. Если последовательность аргументов передана, они автоматически преобразуются в массив.

В этом примере показан как массив, так и последовательность аргументов, передаваемых в метод printVarArgArray() , и то, как они обрабатываются одинаково в коде внутри метода:

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

Выход:

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

Если вы определите метод, подобный этому, он даст ошибки времени компиляции.

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow