Introdução
Olá pessoal, muitas vezes estamos construindo uma aplicação em que não sabemos exatamente quantos parâmetros de um mesmo tipo o método vai ter em sua chamada (quando ele for acionado). Para solucionarmos este problema poderiamos declarar um vetor do tipo que desejado e passá-lo como parâmetro, porém, em Java temos uma forma mais elegante de se passar um número de parâmetros indefinido para os métodos. Vejamos como podemos faze-lo.
Passando um número indefinido de parâmetros
Como dito anteriormente a linguagem Java suporta a passagem de um número indefinido de parâmetros. Para fazer isso basta utilizar três pontos ( ... ) após a declaração do tipo da variável e logo após dos três pontos colocar o nome da variável. Quando isso é o compilador cria um array contendo os valores que foram passados por parâmetro. Exemplo:
public class App {
static void tabuadaDo2(int ... num) {
for(int n : num) {
System.out.println(n + " x 2 = " + n*2);
}
}
public static void main(String[] args) {
tabuadaDo2(2,3,4,5,6,7,8,9,10);//podemos chamar passando os valores 1 à 1
tabuadaDo2(new int[]{1,2,3,4,5,6,7,8,9,10});
}
}
Só é permitida a inclusão de uma parametro indefinido por método, pois, o parametro indefinido deve estar no fim do método (ultimo a ser declarado). Exemplo;
public class App {
static void tabuadaDo2(int ... num, double ... numeros) {//não compila
for(int n : num) {
System.out.println(n + " x 2 = " + n*2);
}
}
public static void main(String[] args) {
tabuadaDo2(2,3,4,5,6,7,8,9,10);//podemos chamar passando os valores 1 à 1
int[] list = {2,3,4,5,6,7,8,9,10};
tabuadaDo2(list);
}
}
É importante ressaltar que apenas variaveis indefinidas tem que serem unicas! Portanto um parametro indefinido pode fazer parte de um metodo que tenha mais de uma variavel de parametro. Exemplo:
public class App {
static void tabuadaDo2(double numeros, int ... num) {
for(int n : num) {
System.out.println(n + " * " + numeros + " = " + n*numeros);
}
}
public static void main(String[] args) {
tabuadaDo2(2,3,4,5,6,7,8,9,10);//podemos chamar passando os valores 1 à 1
tabuadaDo2(new int[]{9,73,4,67,1,0});
}
}
Espero que tenham gostado pessoal, qualquer coisa deixem um comentário. Até mais!!!
Como é nome dessa tecnica?
ResponderExcluirEsse recurso é conhecido como Varargs.
Excluir