Varargs

Java para Iniciantes (Oracle) - Sep 3 - - Dev Community

Varargs: argumentos em quantidade variável

  • Alguns métodos podem precisar de um número variável de argumentos, dependendo da sua aplicação.

  • Um exemplo é um método que abre uma conexão com a Internet e pode receber parâmetros como nome de usuário, senha, nome de arquivo, protocolo, etc.

  • Se algumas informações não forem passadas, o método pode usar padrões para esses parâmetros.

  • Métodos com argumentos de tamanho variável permitem passar apenas os argumentos necessários.

  • Antes do JDK 5, esses métodos eram tratados com sobrecarga ou arrays, o que era uma abordagem limitada e desajeitada.

  • A partir do JDK 5, foi introduzido o recurso varargs, que facilita a criação de métodos com um número variável de argumentos.

  • Varargs é a abreviação de "variable-length arguments".

  • Métodos que utilizam varargs são chamados de métodos de aridade variável ou simplesmente métodos varargs.

  • A lista de parâmetros de um método varargs é de tamanho variável, permitindo receber um número variável de argumentos.

Aspectos básicos dos varargs

  • Uma lista de argumentos de tamanho variável é especificada por três pontos (...).

  • Para criar um método que recebe um número variável de argumentos, utilizam-se esses três pontos na declaração do método.

  • Um exemplo é o método vaTest(), que demonstra como implementar essa funcionalidade.

Image description

  • Observe que v é declarado como: int ... v

  • A sintaxe com ... informa ao compilador que vaTest() pode ser chamado com zero ou mais argumentos.

  • O parâmetro v é implicitamente declarado como um array do tipo int[].

  • Dentro do método vaTest(), v é acessado usando a sintaxe comum de arrays.

  • Um programa completo pode demonstrar o uso de vaTest().

Image description

  • Dentro de vaTest(), o parâmetro v é tratado como um array porque é, de fato, um array.

  • A sintaxe ... indica ao compilador que será usado um número variável de argumentos, que serão armazenados no array v.

  • No método main(), vaTest() é chamado com diferentes números de argumentos, incluindo nenhuma.

  • Quando não há argumentos, o array v tem tamanho zero.

  • Métodos podem ter parâmetros comuns junto com parâmetros de tamanho variável, mas o varargs deve ser o último declarado.

  • Exemplo de declaração aceitável: int doIt(int a, int b, double c, int ... vals).

  • Nesse caso, os primeiros argumentos são passados para os parâmetros comuns, e os restantes para vals.

  • O método vaTest() pode ser reescrito para receber um argumento comum além do varargs.

Image description

  • O parâmetro varargs deve ser o último da lista de parâmetros do método.

  • Não é permitido declarar um parâmetro comum após um parâmetro varargs; isso gera um erro.

  • Apenas um parâmetro varargs pode ser declarado em um método.

  • Tentar declarar mais de um parâmetro varargs no mesmo método, como em int ... vals seguido de double ... morevals, é inválido e gera erro.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .