Apesar do rate nao estar sendo usado no hashCode(), nao tem problema voce usar menos coisas… porque se temos dois iSort iguais, o hashcode deles baterao, apesar de nao estarem aproveitando o rate.
pense num caso parecido so que mais grave: o equals leva em consideracao um MONTE de atributos, mas o hashCode da um estupido return 0. ta ok, mas eh pessimo.
georgesq
na verdade ele se precave pelo extremo.
Paulo Silveira:
Apesar do rate nao estar sendo usado no hashCode(), nao tem problema voce usar menos coisas… porque se temos dois iSort iguais, o hashcode deles baterao, apesar de nao estarem aproveitando o rate.
pense num caso parecido so que mais grave: o equals leva em consideracao um MONTE de atributos, mas o hashCode da um estupido return 0. ta ok, mas eh pessimo.
Java_Player
Paulo Silveira:
Apesar do rate nao estar sendo usado no hashCode(), nao tem problema voce usar menos coisas… porque se temos dois iSort iguais, o hashcode deles baterao, apesar de nao estarem aproveitando o rate.
pense num caso parecido so que mais grave: o equals leva em consideracao um MONTE de atributos, mas o hashCode da um estupido return 0. ta ok, mas eh pessimo.
Se os métodos equals() e hashCode() estivessem corretos, dois objetos “equals” não podem ter hashCodes diferentes, como ocorre no código acima.
Por isso que eu não entendi essa questão do MasterExam.
B
Bruno_Laturner
Edit: besteira minha.
ViniGodoy
Primeiro de tudo, essa é uma questão mal formulada. Sabe porque?
Nenhum dos métodos apresentados satisfaz a assinatura do equals. Leia a última condição, retirada do Javadoc da classe Object: “For any non-null reference value x, x.equals(null) should return false.”
E nesse caso o que acontece? Os objetos lançam NullPointerException.
Você está certo, por sinal. O que o autor da questão não levou em consideração é que a multiplicação é comutativa (AB == BA). E isso torna a implementação do equals altamente sujeito a retornar true.
Se ele tivesse implementado o equals da maneira mais usual, comparando os atributos com ==, não teria tido esse problema e a reposta seria mesmo C e D.