Comparação de objetos

5 respostas
C

Olá,

Eu tenho uma classe sem a codificação de um método equals mas mesmo assim gostaria de comparar duas instâncias (objetos) desta classe e verificar se são os mesmos. Quero dizer, se possuem a mesma seqüência de bits.

Qual seria a melhor maneira de fazer isso? Reflexão?

Obrigado antecipadamente!

Reimer

5 Respostas

Mauricio_Linhares

A mesma sequência de “bits” é complicado companheiro, mesmo dois objetos da mesma classe não vão ficar com a mesma sequencia de bits. Isso depende muito do estado e das propriedades que eles tem.

O melhor a se fazer é implementar o método equals() com a “identidade” que você quer dar a esses objetos.

C

Obrigado! Concordo que deveria ser implementado o método equals realmente.

Vou ser um pouco mais específico na pergunta. Estou codificando um método que irá receber dois objetos, instâncias da mesma classe, e preciso retornar true ou false indicando se todos os atributos dos mesmos possuem o mesmo valor mas não posso confiar no equals porque não sei se foi implementado.

Será que deveria forçar a implementação do equals pelo programador, caso não estiver implementado sair com um erro?

Obrigado antecipadamente pelas sugestões!

Reimer

Java_Vinicius_Machin

Maurício Linhares:
A mesma sequência de “bits” é complicado companheiro, mesmo dois objetos da mesma classe não vão ficar com a mesma sequencia de bits. Isso depende muito do estado e das propriedades que eles tem.

O melhor a se fazer é implementar o método equals() com a “identidade” que você quer dar a esses objetos.


E referencias são diferentes de ponteiros, talvez com ponteiros esta comparação até fosse possivel. :roll:

cv1

Mais ou menos… vc teria ainda sim que saber o tamanho dos objetos e de todos os membros dele na memoria pra fazer a comparacao. Eu prefiro penalizar quem nao sabe escrever equals() e hashCode() do que ir pra um caminho inseguro desses. :wink:

C

Ok,

A princípio irei pelo caminho do equals então!

Abraço e obrigado!

Reimer

Criado 20 de agosto de 2005
Ultima resposta 22 de ago. de 2005
Respostas 5
Participantes 4