Java 11 Dec 2007 15:19
Varargs - Mais um recurso do Java 5
Varargs é um dos novos recursos do Java 5, que como o nome já diz, lhe permite fazer com que um método de uma classe receba parâmetros variáveis. Por exemplo, você quer que o seu método receba 1 int, ou um array. Nas versões anteriores ao Java 5, você teria duas maneiras de fazer:
class Varargs1 {
public void metodoTeste(int a) {
//a implementação tratará um único int
}
public void metodoTeste(int[] a) {
//a implementação tratará o array
}
}
ou então, teria um método apenas, que recebesse um array, e quando quisesse passar um elemento apenas, deveria fazer o seguinte:
...
int x = 4;
metodoTeste(new int[]{x});
...
Este problema foi completamente resolvido na versão 5. Para usar o varargs, você coloca o tipo acompanhado de reticiências “…” e depois o nome da variável, como mostra o exeplo:
class Varargs1 {
public void metodoTeste(int... a) {
/*
a implementação tratará da variável a como
um array, tendo ou não valores...
*/
}
}
Dessa maneira, o método pode ser chamado assim:
metodoTeste();
metodoTeste(5);
metodoTeste(1, 23, 56, 10);
metodoTeste(new int[]{5, 6, 7, 8});
Para manipular os dados que o método recebeu, sempre será um vetor, e é fácil de identificar através da propriedade length:
class Varargs1 {
public void metodoTeste(int... a) {
if(a.length == 0) {
//Não recebeu nenhum valor
} else {
//Recebeu 1 um mais ints
}
}
}
ATENÇÃO: quando se combina o varargs com outros parâmetros num método, é imprescindÃvel que a variável que use as reticiências fique como último parâmetro. Notem que isto é questão de certificação.
class Varargs1 {
/* CORRETO */
public void metodoTeste(String str, int x, double... d) {
...
}
/* INCORRETO */
public void metodoTeste(String str, double... d, int x) {
...
}
}
Para acessar a documentação oficial da SUN, clique AQUI.
Adicione ao del.icio.us

em 07 Jan 2008 as 9:19 pm 1.Wilian disse …
Nossa!
Muito legal isso!
Já tinha me deparado com essa situação algumas vezes sim.
Abraço!
em 08 Jan 2008 as 2:54 am 2.Rafael Quines disse …
É isso ae. Tomara que o post ajude àqueles que ainda passarão por esta situação..
Abraço