Ao programar, é comum encontrarmos situações nas quais precisamos passar uma série de argumentos a um método, sem saber, no entanto, quantos serão esses argumentos. No Java, nós podemos resolver este tipo de problema pondo os argumentos num array genérico e passando este array ao método:
public static void main(String[] args) {
String[] nomes = {
João",
"Maria",
"José"
};
imprimirNomes(nomes);
}
public static void imprimirNomes(String[] nomes) {
for(String nome : nomes) {
System.out.println(nome);
}
}
O Java, entretanto, possui um recurso que automatiza e esconde este processo de pôr as variáveis num array para, em seguida, conseguir acessá-las dentro do método: o varargs. Os argumentos ainda são postos num array para ser passados ao método, mas o Java se encarrega de fazer isto por nós. Utilizando varargs, podemos, então, reescrever a declaração do método imprimirNomes da seguinte forma:
public static void imprimirNomes(String... nomes) {
// ...
}
As reticências que seguem o tipo do parâmetro indicam que este método aceita um array, igual mostrado no exemplo anterior, ou uma série de argumentos, como a seguir:
imprimirNomes("João", "Maria", "José");
O varargs permite invocarmos o mesmo método de uma forma bem mais concisa. Note, entretanto, que apenas o último parâmetro de um método pode ser varargs, o que significa que devemos ter cuidado para não sobrecarregar métodos que se utilizam dele; dessa forma, não causamos dúvida no usuário quanto a qual dos métodos será chamado. O código final fica assim:
public static void main(String[] args) {
imprimirNomes("João", "Maria", "José");
}
public static void imprimirNomes(String... nomes) {
for(String nome : nomes) {
System.out.println(nome);
}
}