Parâmetros do tipo "…’ (reticências) só podem ser inseridos
- Quando são o único parâmetro
- Quando são o último parâmetro
Pois, os mesmos informam ao compilador que o método receberá 0, 1 ou N parâmetros (onde N é um número qualquer, positivo e indeterminado, neste caso, maior que 1).
Das duas uma:
- Coloca o parâmetro String… emails no final, como último parâmetro
- Troca o String… emails por String[] emails e trabalha conforme a assinatura do método.
É a mesma definição String… com String[] ?
Não.
O primeiro (String…) está explicado no comentário anterior.
O segundo (String[]) se refere a um vetor unidimensional de Strings
//Criando vetor com 10 posições
String[] emails = new String[10];
Assim sendo, se a tua necessidade é aceitar vários emails, sem ter garantias que irá passar ao menos 1, sugiro a abordagem de colocar este como último dos parâmetros.
Basicamente, este tipo de assinatura permite isso:
public class Foo {
public void metodoAceitaIndefinido(String... palavras) {
//Faz qualquer coisa
}
}
//Em outro lugar do universo do teu projeto
Foo foo = new Foo();
foo.metodoAceitaIndefinido("arroz", "cebola", maracujá");
//ou
foo.metodoAceitaIndefinido();
//ou
foo.metodoAceitaIndefinido("Método difícil, hein?");
Sem apresentar problemas (a não ser que dentro do método haja algo que exija parâmetros, porém, aí essa assinatura não é a mais indicada.
Entendeu?
Entendi.
Neste caso o minimo é um e-mail, podendo ser N emails para o sistema enviar.
Entendi que devo utilizar o **String… emails"", como ultimo parâmetro de entrada.
Recomendo a leitura https://docs.oracle.com/javase/8/docs/technotes/guides/language/varargs.html
Resumindo
- Varargs facilita a passagem de parâmetro literal
- O argumento para o varargs podem ser 0 ou infinitos
Obs: O Varargs é super conjunto de um array normal, faz tudo que o um array normal faz com alguns recursos a mais (Use com sabedoria)
1 curtida
Entendi @Hyagomvale, por isto optei por utilizar este tipo…
Mas vou ler este documento que você enviou.