Parece que você tem bastante dúvida sobre QUANDO usar ou POR QUE usar.
Ele não serve para se obter um único valor, como no seu exemplo. Nesse caso realmente não há nenhuma vantagem.
Como foi dito no post anterior, se você precisa de um parâmetro específico então não é uma situação adequada para usar var-args.
Como diz o próprio nome, serve para receber uma quantidade variável de argumentos.
Vamos imaginar o seguinte: uma classe de utilidades matemáticas, com alguns métodos de soma:
// Classe MatemaUtils
soma2Numeros(a,b) {
return a + b;
}
soma3Numeros(a,b,c) {
return a + b + c;
}
soma4Numeros(a,b,c,d) { ....
soma12Numeros(a,b,c,d,e,f,g,h,i,j,k,l) { ....
soma20Numeros(...........
// Classe chamadora:
resultado = MatemaUtils.soma2Numeros(5, 7);
resultado = MatemaUtils.soma3Numeros(50, 12, 40);
resultado = MatemaUtils.soma4Numeros(20, 17, 50, 120);
Tedioso, não?
Com var-args pode ser criado um único método:
[code]
// Classe MatemaUtils
somaNumeros(int… valores) {
int res = 0;
for(int v : valores){
res = res + v;
}
}
// Classe chamadora:
resultado = MatemaUtils.soma2Numeros(5, 7);
resultado = MatemaUtils.soma3Numeros(50, 12, 40);
resultado = MatemaUtils.soma4Numeros(20, 17, 50, 120);[/code]