O que são os 3 pontos para métodos em Java?

É importante para evitarmos sobrecargas de métodos.


O que são os 3 pontos para métodos em Java?


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.


Exemplos

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.


java


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!