Ordem em que a JVM chama métodos sobrecarregados de uma classe  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
leonardo.moreti
HelloWorld

Membro desde: 30/10/2009 08:22:49
Mensagens: 12
Localização: Sorocaba/SP
Offline

Estou precisando de uma ajuda para entender melhor a ordem em que a JVM chama os métodos sobrecarregados de uma classe, sendo que estes métodos possuem argumentos de tipo primitivo, de tipo Wrapper e var-args.

Fiz um código de teste, e vi que a JVM chama nessa ordem: Tipo primitivo ----> Classes Wrapper -----> Var-args. A ordem é essa mesma?



Obs: Quando comentei os métodos void go(int x), void go(long x) e void go(Integer x) obtive o seguinte erro de compilação: The method go(int[]) is ambiguous for type A. Alguém pode me ajudar?
Raulen Rodrigues da Cunha
Debugger
[Avatar]

Membro desde: 02/09/2009 16:45:39
Mensagens: 65
Localização: Brasília-DF
Offline

A JVM prefere a ampliação do que o autoboxing ou varargs...

Daí vem a dúvida e se tiver dois metodos um que tem q fazer auto-boxing e outro q tem var-args,
a jvm vai escolher o auto-boxing, pois o var-args é muito abrangente ele aceita de 0 a muitos argumentos, então fik na lógica que quanto maior for a abrangência ele deve ficar por último, para não deixar os outros métodos inutilizáveis.

SCJP 6
[Email] [MSN]
mario.fts
Virtual Machine Man
[Avatar]

Membro desde: 14/05/2008 09:41:06
Mensagens: 632
Localização: São Paulo - ZL
Offline

Não me lembro de cabeça das regras, mas isso cai na SCJP. procura material sobre a certificação q lá tem a ordem. no livro da katty sierra, é no capitulo 3 se não me engano.


Mário Amaral Gonçalves
[Email]
Cl?ber Jos
HelloWorld
[Avatar]

Membro desde: 26/04/2009 09:58:48
Mensagens: 18
Offline

é, realmente é muito estranho

a ambiguidade ocorre entre os métodos var-args que passam (int... x) e (Integer...x)
eu não sei o porque isso não é detectado antes, só quando a JVM tem somente os dois como opção que ocorre esse erro

espero que alguém saiba kkkkkkkk

"Se não venço pelo talento venço pelo esforço"
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team