Varargs in Java: argomenti a lunghezza variabile



Con i varargs è possibile passare ad una funzione un numero variabile di argomenti.
Il nome varargs, è un’abbreviazione, infatti, di “argomenti a lunghezza variabile”.

Questa funzionalità e stata aggiunta a partire dalla versione 5 di java. Prima di questa versione per passare un numero variabile di argomenti ad una funzione, si passava al metodo un array in cui poi ogni elemento sarebbe stato l’argomento da passare.

Vediamo un esempio:

class Test
{
public static void main(String args[])
{
int v[] = { 5, 7, 4, 9, 3};
int v2[] = { 4, 2};
int v3[] = { 1, 1, 2, 5, 9, 8};
//Richiamiamo le funzioni con i vari array
ArgsTest(v); //Richiamo la funzione con un array di 5 elementi
ArgsTest(v2); //Richiamo la funzione con un array di 2 elementi
ArgsTest(v3); //Richiamo la funzione con un array di 6 elementi
}
static void ArgsTest(int v[])
{
System.out.println("Contenuto di v[]:");
for(int x : v)
{
System.out.println(x);
}
System.out.println();
}
}

Con i varargs, invece, è possibile scrivere un codice come questo:

class Test
{
public static void main(String args[])
{
ArgsTest(1, 5, 3, 2, 8); //Richiamo la funzione con un array di 5 elementi
ArgsTest(4, 6); //Richiamo la funzione con un array di 2 elementi
ArgsTest(4, 2, 3, 4, 5, 6); //Richiamo la funzione con un array di 6 elementi
}
static void ArgsTest(int ... v)
{
System.out.println("Contenuto di v[]:");
for(int x : v)
{
System.out.println(x);
}
System.out.println();
}
}

Come si può vedere, semplicemente sostituendo l’argomento array con int … v, che è appunto il varargs, la funzione è ora predisposta ad accettare infiniti argomenti.

La variabile v, infatti, verrà trasformata implicitamente in un array con una dimensione tanto grande quanti sono gli argomenti passati alla funzione.

All’interno della funzione stessa, poi, il varargs potrà essere usato come un array e trattato appunto come tale.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest