Dvida boxing e unboxing!  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
Raff
Virtual Machine Man
[Avatar]

Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline

Pessoal eu estava lendo o livro da Kathy sobre boxing e unboxing, quando me surgio duvida sobre o assunto.
Exemplo dado o codigo a baixo o que acontece

a saida que deu aqui no eclipse de casa foi "Usando wrapper Byte", mas eu estava certo que iria sair "Usando a ampliação 5" pois como o livro mostra a compilador prefere ampliar do que fazer boxing....

Pessoal por favor me esclareça essa duvida...


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

O seu teste está errado. Se quiser checar a tal "ampliação" (Widening), faça com este programa:

[WWW]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

bom, nao tem pq ele chamar o Object, ja que byte é um primitivo.. se ele nao encontrar um correspondente ele nao compila.. mas como no java 5 tem o autoboxing ele faz de byte para Byte, remova ai o metodo que tem o Byte para ver se ele faz o autoboxing para Object e depois par Byte, segundo a kathy isso era muita coisa para o compilador.

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
RafaelVS
JavaEvangelist
[Avatar]

Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline

thingol wrote:O seu teste está errado. Se quiser checar a tal "ampliação" (Widening), faça com este programa:



Na verdade, a opção Object é ambos e nesta ordem: boxing + widening. Se só tivesse essa opção, o byte primitivo seria boxed para Byte e então widened para Object.
Omeganosferatu
JavaEvangelist
[Avatar]

Membro desde: 05/01/2007 10:13:24
Mensagens: 328
Localização: São Paulo
Offline

O problema é que voce usa um byte primitivo e tem um método com uma chamada pra Byte ( box de byte ), portanto ele prefere fazer o box, a ampliação seria feita se você tivesse algum outro método com algum primitivo.



Dessa forma ele chamaria o int, pra chamar object, voce teria que omitir o método com um wrapper Byte e omitir ou modificar o método do int pra um wrapper Integer

Sun Certified Java Programmer
Sun Certified Java Developer

The death of one is a tragedy, but death of a million is just a statistic ( Joseph Stalin )
[ICQ]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

so mais uma dica.. os novos recursos seria a ultima coisa que ele faria ai.. como autoboxing, vargs.... como Omeganosferatu falou se tivesse um primitivo "int " por exemplo esse seria chamado ao inves do da ampliação para o Byte isso por questao de compatibilidade até.. ja que o autoboxings so ta presente a partir do java 1.5.

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team