Java: métodos com número variável de parâmetros

A partir do Java 5 podemos escrever métodos com um número variável de parâmetros, é o chamado varargs. Com isso podemos criar métodos bem flexíveis e elegantes, principalmente se aplicando isso juntamente com outros recursos como o loop melhorado e polimorfismo.

Esse exemplo cria uma classe Estatistica com o método media que pode receber um número variável de argumentos do tipo int.

public class Estatistica {
    public float media(int... numeros){
        float soma = 0;
        for(int num: numeros)
            soma += num;
        return soma/numeros.length;
    }
    public static void main(String[] args) {
        Estatistica est = new Estatistica();
        System.out.println( est.media(1,2,3) );
        System.out.println( est.media(0,1,2,3,4,5,6,7,8,9,10) );
        System.out.println( est.media(10,20,30) );
    }
}

$ javac Estatistica.java
$ java Estatistica
2.0
5.0
20.0

Legal, né? Isso sim é sobrecarga de método. ;)

4 thoughts on “Java: métodos com número variável de parâmetros”

  1. Silveira, mas já tem alguma coisa tipo a sobrecarga do C++? Algo como como eu ter duas funções de mesmo nome, mas funcao(int var) e funcao(char var)?

  2. se for sobrcarga de operador, os sonhos não se realizaram ainda, :P

    Silveira, já que vc está dando uma estudada em java, vê se o varags pode ser usado sem um loop foreach, porque até hoje eu não sei que diabos os três pontinhos são de verdade, :/

  3. Esdras, tem sobrecarga de método sim, você pode mudar os parâmetros, o tipo de retorno ou a exceção levantada, para um mesmo nome de método. Agora como o sombriks falou, não tem sobrecarga de operador como em Python, por exemplo.

    sombriks, eu acho que eu não entendi bem a pergunta mas acho que o (int… numeros) quer dizer que ele vai receber um vetor de inteiros. Seria o mesmo que (int [] numeros).

Leave a Reply

Your email address will not be published. Required fields are marked *