Buscar..


Observaciones

Un argumento del método "varargs" permite a las personas que llaman de ese método especificar múltiples argumentos del tipo designado, cada uno como un argumento separado. Se especifica en la declaración del método mediante tres períodos ASCII ( ... ) después del tipo base.

El método en sí recibe esos argumentos como una única matriz, cuyo tipo de elemento es el tipo del argumento varargs. La matriz se crea automáticamente (aunque las personas que llaman todavía pueden pasar una matriz explícita en lugar de pasar múltiples valores como argumentos de métodos separados).

Reglas para varargs:

  1. Varargs debe ser el último argumento.
  2. Sólo puede haber un Varargs en el método.

Debe seguir las reglas anteriores, de lo contrario el programa dará un error de compilación.

Especificando un parámetro varargs

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

Los tres períodos posteriores al tipo de parámetro final indican que el argumento final se puede pasar como una matriz o como una secuencia de argumentos. Varargs solo se puede utilizar en la posición del argumento final.

Trabajando con los parámetros de Varargs

Utilizando varargs como parámetro para una definición de método, es posible pasar una matriz o una secuencia de argumentos. Si se pasa una secuencia de argumentos, se convierten automáticamente en una matriz.

Este ejemplo muestra una matriz y una secuencia de argumentos que se pasan al método printVarArgArray() , y cómo se tratan de manera idéntica en el código dentro del método:

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

Salida:

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

Si define el método de esta manera, dará errores de tiempo de compilación.

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow