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?
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.
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?
[quote=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.[/quote]
E referencias são diferentes de ponteiros, talvez com ponteiros esta comparação até fosse possivel. :roll:
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.