Negocio

Java Varargs: uso e exemplos

Java Varargs

Para explicar o conceito de argumentos variáveis, não precisamos ir além do método central de nossos programas, o método principal. O conceito de varargs significa que um método pode receber qualquer número de argumentos, de zero a uma dúzia.

static void showMsg (String ... vars) { 
  System.out.println ("Varargs Output");
}

A seguir, chamaremos esse método duas vezes. Uma vez sem argumentos e depois com quatro:

public static void main (String [] args) { 
  // nenhum argumento
  showMsg ();
  // quatro argumentos
  showMsg ("Hi", "Let's", "Play", "Golf");
}

Faça um loop pelos argumentos

O exemplo anterior mostrou os fundamentos do conceito. No entanto, ainda não fizemos nada. A seguir, vamos examinar cada um dos argumentos e exibir o resultado. Esta funcionalidade será muito útil em breve. Depois de passar os argumentos para o método showMsg, podemos percorrê-los com um simples laço » for ». Visto que as variáveis ​​/ argumentos são Strings, precisamos especificar isso no loop, fornecer um (s) contador (es) e, em seguida, a variável sobre a qual estamos fazendo o loop. Nesse caso, é vars , que é a variável que contém nosso argumento.

public void showMsg (String ... vars) { 
  System.out.println ("Saída Varargs");
  // percorre os argumentos
  de (Strings s: vars) {
   System.out.println ("Arg =" + s);
  }
}

Quando compilamos e executamos esse código, a seguinte saída é exibida. Lembre-se de que chamamos esse método duas vezes, uma vez sem argumentos e outra com quatro. A primeira mensagem será exibida duas vezes.

Saída de args de loop Java varargs

Vejamos mais um exemplo usando inteiros em vez de strings. O código a seguir combina o método e o código que chama o método:

static void updateStuff (int ... ints) { 
  System.out.println ("Ints!");
  para (int x: ints) {
   System.out.println ("Ints =" + x);
  }
}
public static void main (String [] args) {
  updateStuff (13, -2333, 0);
}

Quando o programa é executado, a seguinte saída é exibida:

Saída Java varargs int

Observe que os valores passados ​​devem ser todos do mesmo tipo! Você não pode misturar duplas ou uma corda ou qualquer outro tipo. Existe uma maneira de misturar os tipos em um método e ainda usar a funcionalidade varargs. Falaremos sobre isso a seguir.

Argumentos Múltiplos

Você pode realmente ter seus argumentos variáveis ​​junto com outros argumentos. Ou seja, você pode passar ao seu método um double, um int e, em seguida, um String usando varargs. Pode parecer bobagem ter vários argumentos em um método que já aceita vários argumentos.

Considere isso, a peça varargs só pode aceitar um tipo de dados. Se quisermos enviar outros tipos, precisamos de mais argumentos. No entanto, isso também significa que você precisará passar esses argumentos para o método todas as vezes.

Vamos dar uma olhada em alguns códigos. O seguinte adiciona alguns argumentos adicionais ao nosso método showMsg. Observe que o comando String … vars é o último comando. Quando você tem vários argumentos, a funcionalidade varargs deve ser a última.

estático void showMsg (duplld d, int c, String ... vars) { 
  System.out.println ('Varargs Output');
  // mostra os números
  System.out.println ('Double =' + d);
  System.out.println ('Int =' + c);
  // percorre os argumentos
  de (String s: vars) {
   System.out.println ('Arg =' + s);
  }
}

A seguir, veja como chamamos esse método. Teremos que enviar um duplo e um int, e então podemos enviar o que mais precisarmos / quisermos.

public static void main (String [] args) { 
  showMsg (32.53, 15, "Hi", "Let's", "Play", "Golf", "Today");
}

Quando o programa é executado desta vez, obtemos os valores double e int, mais os argumentos separados que passamos. Observe que adicionamos outro argumento String. Java levou isso a sério, uma vez que tínhamos a funcionalidade varargs no final da definição do método.

Java varargs chama saída multi args

Usos para Varargs

Existem usos práticos para varargs. Uma é decretar o registro. Você pode ter um método de registro, mas envie a ele diferentes elementos de dados para rastrear. Para algumas instâncias da classe, você pode registrar três itens; outro pode registrar 100.

Ao receber a entrada do usuário, varargs pode ajudá-lo. Digamos que você esteja reunindo um conjunto de números do usuário e, em seguida, adicione seus valores absolutos.

public class VariableArgs { 
  public static double addEm (double ... items) {
   double total = 0.0;
   para (duplo d: itens) {
    total + = d;
   }
  return Math.abs (total);
  }
}

Assumiremos que o programa recebeu a entrada do usuário e, em seguida, chamou essa função, passando todos os valores do teclado nos bastidores e depois retornou o valor absoluto do total. Este é um bom aplicativo para varargs. É útil quando você não sabe quantos argumentos enviará.

Resumo da lição

Tudo bem, vamos analisar rapidamente o que aprendemos. A funcionalidade varargs permite que você passe qualquer número de argumentos para um método. O método deve ser configurado com o tipo de dado e um nome de variável para conter os elementos. Você pode adicionar mais parâmetros ao método, mas a instrução varargs deve ser a última. Existem muitos usos para varargs, incluindo alterações de log ou cálculos em vários valores quando você não sabe quantos valores você terá.