| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:32:11
|
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?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 14:08:18
|
Raulen Rodrigues da Cunha
Debugger
![[Avatar]](/images/avatar/fe11d41c342e5325fca2d2ca407828f0.png)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 14:13:34
|
mario.fts
Virtual Machine Man
![[Avatar]](/images/avatar/9e96d422fba85185a33829439f5df09d.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 15:55:17
|
Cl?ber Jos
HelloWorld
![[Avatar]](/images/avatar/47cd88b1d755ffa84889a71a728bc0ab.png)
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" |
|
|
 |
|
|