Boa tarde Schuenemann!
Deve haver algum equivoco na tua conclusão :? , pois uma collection nada tem a ver com um Objeto Array;
Se por acaso o overload fosse da seguinte maneira:
metodo void (String [] o){}
metodo void (String … o){}
O compilador em tempo de execulsão escolheria o primeiro método, pois isso seria “mais natural”.
S
Schuenemann
Mas, eu não concluí nada…
Como passei um Map, eu esperava que ele chamasse o método que recebe um Map. Só que ele cria um array, coloca o Map na primeira posição e chama o método que recebe array.
peerless
Utilize Generics se for o caso. E transforme o segundo parâmetro em um Objeto do tipo Map (na hora de enviar o argumento)
S
Schuenemann
Não dá pra usar generics no primeiro (não tem muito sentido) e o segundo método já usa.
Sobre transformar, fazer cast para Map<String, Object> faz chamar o “correto”, mas, por que fazer isso, se a referência já era Map<String, Object>? Por que precisa fazer um cast para o próprio tipo?
peerless
Por que todo mundo é filho de Object (lembra?), caso não explicite qual tipo você passa para aceitar, o Object via comer todo mundo que vier por prioridade.
S
Schuenemann
Como assim?
O normal é pegar o tipo mais específico.
m(String s) {}
m(Object o) {}
metodo_qualquer() {
m(null); // O escolhido é o que recebe String
}
mateusbrum
Estranho…
Nos meus teste ele utilizou o método do Map!? :?
Poderia postar teu teste por completo ?
S
Schuenemann
mateusbrum:
Estranho…
Nos meus teste ele utilizou o método do Map!? :?
Poderia postar teu teste por completo ?
Eu tirei o cast e passou a pegar o do Map. Isso é esquisito demais. A única coisa que fiz foi colocar o cast e depois tirar.
Alguma coisa o Netbeans fez para acontecer isso. Estou sem entender.