Só me corrigindo. Será um syntax suggar se o código for compilado compatível com Java 4, e para efeitos práticos.
Mas no bytecode do Java 5, o compilador inclui a informação de que o método é declarado com varargs nas informações de meta-classe, para que você possa testar isso via reflexão. É o que torna a existência de métodos como isVarArgs possível.
Entretanto, para efeitos de busca pelo método em funções como “getDeclaredMethods”, os varargs também aparecerão como arrays.
Nesse caso, em uma chamada a meuMetodo com dois argumentos, sempre acionará sem varArgs, pois tem precedência maior do que o método com varArgs. Com um ou mais de dois argumentos, acionará o método com varArgs.
mas a minha dúvida não era sobre as regras de uso dos var-args nem sobre as regras de precedência entre métodos (ampliação > autoboxing > var-args),
o livro da Kathye é bem claro sobre isso,
mas não fala nada sobre a possibilidade de haver mais de um método main,
pois como o Maverick já demostrou é possível ter métodos sobrepostos com os argumentos “String[]” e “String…”,
como :public static void noMain(String[] a){}epublic static void noMain(String... a){}
pra tirar minha dúvida escrevi o código do primeiro post, e verifiquei que o compilador reclama assim
cannot declare both main(java.lang.String...) and main(java.lang.String[]) in MinhaClasseComVarArg
public static void main(String... a){…e resolvi copartilhar com a comunidade,
mesmo assim abrigado pelas respostas