Java Language
Varargs (argomento variabile)
Ricerca…
Osservazioni
Un argomento del metodo "varargs" consente ai chiamanti di quel metodo di specificare più argomenti del tipo designato, ciascuno come argomento separato. Viene specificato nella dichiarazione del metodo da tre periodi ASCII ( ...
) dopo il tipo base.
Il metodo stesso riceve quegli argomenti come un singolo array, il cui tipo di elemento è il tipo dell'argomento varargs. La matrice viene creata automaticamente (sebbene ai chiamanti sia ancora permesso di passare una matrice esplicita invece di passare più valori come argomenti separati del metodo).
Regole per vararg:
- Varargs deve essere l'ultimo argomento.
- Ci possono essere solo un Vararg nel metodo.
Devi seguire le regole precedenti altrimenti il programma darà un errore di compilazione.
Specifica di un parametro varargs
void doSomething(String... strings) {
for (String s : strings) {
System.out.println(s);
}
}
I tre punti dopo il tipo del parametro finale indicano che l'argomento finale può essere passato come una matrice o come una sequenza di argomenti. Varargs può essere utilizzato solo nella posizione dell'argomento finale.
Lavorare con i parametri di Vararg
Usando varargs come parametro per una definizione di metodo, è possibile passare una matrice o una sequenza di argomenti. Se viene passata una sequenza di argomenti, vengono convertiti automaticamente in una matrice.
Questo esempio mostra sia una matrice che una sequenza di argomenti passati nel metodo printVarArgArray()
e come vengono trattati in modo identico nel codice all'interno del metodo:
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);
}
}
Produzione:
10,20,
5,6,5,8,6,31
Se si definisce il metodo in questo modo, si otterranno errori in fase di compilazione.
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