Java: Varargs...


Somente o último parâmetro de um método em Java pode ser do tipo varargs.

Um parâmetro vararg pode receber 0, muitos ou um array de parâmetros. Aliás, é por essa característica que o parâmetro vararg deve ser o último parâmetro do método.

Para declarar um vararg nós colocamos três pontinhos no tipo do parâmetro. Por exemplo: void metodo1(int a, String... b). Neste exemplo o parâmetro b é o parâmetro vararg do método.

Vejamos no exemplo abaixo todas as formas de utilizar o parâmetro do tipo vararg.

package br.com.dicasdejava.fundamentos;

public class Varargs {

    public static void main(String[] args) {

        //Sem o 3º parâmetro (Vararg...)
        metodoComVarargs("a1", true);

        //Com o 3º parâmetro do tipo int
        metodoComVarargs("a2", false, 1);

        //Com o 3º parâmetro do tipo int[] (array de int)
        metodoComVarargs("a3", true, new int[]{1, 2, 3});

        //Com vários parâmetros int a partir do 3º parâmetro (Vararg...)
        metodoComVarargs("a4", true, 1, 2, 3, 4, 5);

    }

    static void metodoComVarargs(String a, boolean b, int... c) {

        System.out.println(a);
        System.out.println(b);
        System.out.println(c.length);
        for (int d : c)
            System.out.println(d);
        System.out.println();

    }

}

Saída:

a1
true
0

a2
false
1
1

a3
true
3
1
2
3

a4
true
5
1
2
3
4
5

Deve ser do mesmo tipo!

É importante notar que o Vararg recebe valores do mesmo tipo. Não podemos por exemplo, chamar o método do exemplo acima passando os seguintes parâmetros.

//NÃO PODE CHAMAR O MÉTODO ASSIM!
metodoComVarargs("a3", true, 1, "texto", false, 'c');

Deve ser o último parâmetro!

Como já vimos no inicio do post, o parâmetro vararg deve ser o último parâmetro do método. Não podemos declarar um método como no exemplo a baixo

//NÃO PODE DECLARAR O MÉTODO ASSIM!
void metodoComVarargs(String a, boolean... b, int c)

Referências:

  1. JavaDoc: Varargs