Olá pessoal. To com uma dúvida. Em todos os lugares se diz que quando se for comparar objectos se deve usar .equals( Object ) ao invés do operador “==”.
Hj me deu curiosidade e resolvi olhar como o método equals é implementado, e fiquei surpreso ao achar:
chutaria que ele compara o endereço de memoria referenciada dos objetos.
L
leandrotbs
Polimorphism, você olhou o equals do classe Object, se você olhar o da classe String, verá que ele foi reescrito.
guedes
Olá Polimorphism,
por isso que em classes que criadas por você o ideal é sempre sobrescrever o método equals, porque se não vai usar o equals da classe Object, que iria comparar a instancia das classes, que por sua vez poderia não gerar o resultado esperado.
Lembrando que ao sobrescrever o método equals o ideal é também sobrescrever o método hashCode para que objetos iguais tenha códigos hash iguais.
[]'s
ViniGodoy
Já notei que você é ligado em boas práticas.
Procure obter e ler o livro Effective Java. Tenho certeza que será um prato cheio para você.
(Aliás, essa deveria ser leitura obrigatória para todo programador Java)
tinorberto
Oi Polimorphism, de uma na estrutura do Object , elke não tem campos , apenas metodos , logo seria impossivel fazer a comparação utilizando os campos . Isso e utilizado pois sempre que criamos um object hedanos a classe Object . Na classe que vc criou que tem os campos , na classe Object tem apenas os metodos… flw
Já notei que você é ligado em boas práticas.
Procure obter e ler o livro Effective Java. Tenho certeza que será um prato cheio para você.
(Aliás, essa deveria ser leitura obrigatória para todo programador Java)
Ok, vou ver se acho
quedes:
Olá Polimorphism,
por isso que em classes que criadas por você o ideal é sempre sobrescrever o método equals, porque se não vai usar o equals da classe Object, que iria comparar a instancia das classes, que por sua vez poderia não gerar o resultado esperado.
Lembrando que ao sobrescrever o método equals o ideal é também sobrescrever o método hashCode para que objetos iguais tenha códigos hash iguais.
[]'s
Estranho =!, Nunca sobrescrevi o método equals e ele sempre me retorna certo ( Acho eu )
E eu que tinha quase jurado que ia achar um native ou alguma coisa assim ^^
Obrigado vou pesquisar um pouco.