| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 07:47:28
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Bom dia!
Não entendi a resposta, alguém pode ajudar?
Resposta: B
Não consegui entender.
Grato.
This message was edited 2 times. Last update was at 22/02/2010 20:15:13
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 09:08:52
|
pmlm
GUJ Master
Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline
|
Elementos iguais (equals devolve true) devem ter hashCodes iguais.
Como o equals que foi implementado compara os campos age e name, o hashCode deve resultar também desses dois campos para que se verifique a afirmação anterior.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 09:23:10
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Hum.....
Mas o que ocorreria se o hashCode fosse implementado como na letra c?
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 09:58:11
|
Tchello
GUJ Master
![[Avatar]](/images/avatar/901db33c84e81b1a30e59949bbcb112b.png)
Membro desde: 07/06/2008 14:41:04
Mensagens: 1693
Offline
|
O que ele quis dizer é que como no equals foi considerado apenas age e name, o hashCode também deve seguir essa lógica, uma vez que pela lógica podemos supor que age e name são campos obrigatórios e sempre existirão para um objeto do tipo Person, já comment não, devendo ser desconsiderado tanto no equals quanto no hashCode, uma vez que pode não existir nessas instâncias (objetos).
This message was edited 1 time. Last update was at 22/02/2010 09:59:30
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 10:08:46
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Acho que a palavra appropriate define a resposta.
Acredito que todos sejam válidos mas apropriado é a letra b pois equals e hashCode atuam sobre as mesmas variáveis de instância.
Isso eu entendi, mas qual o efeito para a localização de um objeto que tem o hashCode utlizando as variáveis de instância diferentes de equals?
Este objeto será localizado?
Grato.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 10:24:23
|
Gustavo.foa
Entusiasta Java
![[Avatar]](/images/avatar/003dd617c12d444ff9c80f717c3fa982.jpg)
Membro desde: 14/05/2006 14:39:47
Mensagens: 21
Offline
|
O hashcode está diretamente ligado ao equals, então o método equals considera iguais os objetos que tem age e name iguais, desconsiderando comments. Então o hashcode também na pode "depender" do atributo comments. senão objetos que podem ter age e name iguais mas comments diferente não teriam hashcode iguais, mas o equals retornaria true e isso é contra a regra do hashcode que diz: "Se o método equals retorna true, o método hashCode deve ter o mesmo valor para os dois objetos e o contrário não é necessário."
equals == true => hashCode DEVE ter o mesmo número
hashCode iguais, não necessáriamente equals é true.
hashCode diferentes, equals nunca retornará true.
O appropriate é porque a letra "a" também atende a regra, mas é mais apropriado vc restringir mais o hashCode, de "preferencia" utilizando todas as variáveis utilizadas no equals.
Espero ter ajudado.
Abraço!
|
***************************************
Gustavo Furtado de Oliveira Alves
Sun Certified Java Programmer for Platform 6 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/02/2010 10:37:41
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Gustavo.foa wrote:O hashcode está diretamente ligado ao equals, então o método equals considera iguais os objetos que tem age e name iguais, desconsiderando comments. Então o hashcode também na pode "depender" do atributo comments. senão objetos que podem ter age e name iguais mas comments diferente não teriam hashcode iguais, mas o equals retornaria true e isso é contra a regra do hashcode que diz: "Se o método equals retorna true, o método hashCode deve ter o mesmo valor para os dois objetos e o contrário não é necessário."
equals == true => hashCode DEVE ter o mesmo número
hashCode iguais, não necessáriamente equals é true.
hashCode diferentes, equals nunca retornará true.
O appropriate é porque a letra "a" também atende a regra, mas é mais apropriado vc restringir mais o hashCode, de "preferencia" utilizando todas as variáveis utilizadas no equals.
Espero ter ajudado.
Abraço!
Perfeito....
Estava me esquecendo deste detalhe...
Então o hashcode também na pode "depender" do atributo comments. senão objetos que podem ter age e name iguais mas comments diferente não teriam hashcode iguais, mas o equals retornaria true e isso é contra a regra do hashcode que diz: "Se o método equals retorna true, o método hashCode deve ter o mesmo valor para os dois objetos e o contrário não é necessário."
Agora eu entendi, valeu mesmo pessoal.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
|
|