04a3c-arquivos-java

Em algumas situações podemos querer criar uma função que não sabemos de antemão quantos argumentos serão necessários. Veja como exemplo um programa que calcule uma soma. Em determinado momento você quer somar só dois números, mas em outro momento pode querer somar 7 números.

Varargs ( vários argumentos) serve exatamente para isso.

Funciona da seguinte forma:

int soma(int ... x){

// mais código aqui

}

Os três pontos significam que você está usando varargs  e que pode aceitar vários argumentos. Os argumentos vão ficar armazenados em um vetor , no nosso exemplo vetor x.

Você também pode combinar tipos diferentes de argumentos , mas a regra é que o ultimo argumento declarado deve ser o vararg. Veja o exemplo abaixo:

int soma(double a, int ... b){

// mais código aqui

}


Nesse caso os valores dosvarargs ficarão armazenados em um vetor de nome b.

Veja o exemplo abaixo com um código já completo funcionando.


public class TesteVarargs {


 public static void main(String[] args) {
//cria um objeto para ser testado
 TesteVarargs t = new TesteVarargs( );

// soma 4 numeros
 System.out.println("soma: 1+2+3+4 =" + t.somarVarios(1,2,3,4));
 

// soma 2 numeros


System.out.println("soma: 1+2 =" + t.somarVarios(1,2));
//chama o metodo mas não soma nada
System.out.println("soma: nada =" + t.somarVarios());
//soma um double e varios ints
 System.out.println("soma: 5.32 +2 +3 +4 =" + t.somarVarios2(5.32,2,3,4);
 }
 
int somarVarios(int ...x){
 
  int result=0;
  if(x.length==0) return result;
  for (int i = 0; i < x.length; i++) {
      result += x[i];
   } 
 return result; 
 }
 
 double somarVarios2(double x, int ...y){
   double result=0;
   if(y.length==0) return result;
   for (int i = 0; i < y.length; i++) {
     result += y[i];
   } 
 return result+x ;
 }
 
}

Note que só existe um método somarVarios que funciona para vários casos ao mesmo tempo, esse é o grande uso do varargs , dar essa flexibilidade para o programador.
Para usar um método que somasse inteiros e um double foi criado um segundo método somarVarios2 , onde o primeiro argumento é um double e o segundo é um varargs.
bom proveito !
Anúncios