Assim como em outras linguagens de programação: C++ e C, por exemplo, os três pontos (...
) são usados na declaração de um método como parâmetro.
Esses pontos permitem que NENHUM argumento seja passado, bem como vários argumentos sejam passados quando o método é chamado. Esses três pontos também são conhecidos como var args
.
Suponhamos que você possui esse código abaixo com um método de nome tresPontos
que retorna uma String
e recebe também como String
um var args
:
public class Code {
public static String tresPontos(String...i){
String frase = "";
for (String s : i) {
frase += s;
}
return frase;
}
public static void main(String[] args) {
System.out.println("Resultado: " + tresPontos("Naquele ", "dia"));
}
}
Note que o método não especifica que recebe só 2 argumentos, mas nós passamos 2 argumentos e ela retorna a saída:
Resultado: Naquele dia
Se eu não passar argumentos ou passar mais que 2 ela entenderá normalmente, exemplo:
public class Code {
public static String tresPontos(String...i){
String frase = "";
for (String s : i) {
frase += s;
}
return frase;
}
public static void main(String[] args) {
System.out.println("Resultado: " + tresPontos());
System.out.println("Resultado: " + tresPontos("Naquele ", "dia"));
System.out.println("Resultado: " + tresPontos("Naquele ", "dia ", "eu estava"));
System.out.println("Resultado: " + tresPontos("Naquele ", "dia ", "eu estava ", "meio ansiosa."));
}
}
A saída será:
Resultado:
Resultado: Naquele dia
Resultado: Naquele dia eu estava
Resultado: Naquele dia eu estava meio ansiosa.
Podíamos ainda usar outro método, dessa vez do tipo void
e que recebe var args
do tipo int
:
Chamando: sem passar argumentos e com número variado de argumentos!
public class Code {
public static String tresPontos(String...i){
String frase = "";
for (String s : i) {
frase += s;
}
return frase;
}
public static void tresPontosInt(int ... i){
int soma = 0;
for (int x : i) {
soma += x;
}
System.out.println("A soma é: " + soma);
}
public static void main(String[] args) {
System.out.println("Resultado: " + tresPontos());
System.out.println("Resultado: " + tresPontos("Naquele ", "dia"));
System.out.println("Resultado: " + tresPontos("Naquele ", "dia ", "eu estava"));
System.out.println("Resultado: " + tresPontos("Naquele ", "dia ", "eu estava ", "meio ansiosa."));
Code.tresPontosInt();
Code.tresPontosInt(3);
Code.tresPontosInt(3, 6);
Code.tresPontosInt(0, 6, 3, 1, 9);
Code.tresPontosInt(1, 2, 3, 4, 5, 6);
}
}
Funcionará normalmente, além da saída do método dos tresPontos()
ainda teremos:
A soma é: 0
A soma é: 3
A soma é: 9
A soma é: 19
A soma é: 21
Molezinha de entender, né?!
Para mais informações acesse o tópico da documentação oficial.