Dúvida MasterExam

3 respostas
diegobrandao

Bom dia,

Estou com dúvida quanto a questão abaixo.
Não entendi porque a letra D está correta também.
A letra C ok, agora a letra D?
Aguém poderia dar uma mão?

public class SortOf {
	String name;
	int bal;
	String code;
	short rate;

	public int hashCode(){
		return (code.length() * bal);
	}
	public boolean equals(Object o){
		//code here
	}
}
/*
Which of the following will fulfill the equals() and hashCode() contracts for this class?

A - return ((SortOf)o).bal == this.bal;
B - return ((SortOf)o).code.length() == this.code.length();
C - return ((SortOf)o).code.length() * ((SortOf)o).bal  == this.code.length() * this.bal;
D - return ((SortOf)o).code.length() * ((SortOf)o).bal * ((SortOf)o).rate == this.code.length() * this.bal * this.rate;

===========
Explanation
===========
C and D are correct.
The equals() algorithm must be at least as precise in defining what "meaningfully equivallent"
means as the hashCode() method is.
*/

3 Respostas

dlt

Não entendi qual foi sua dúvida aqui. O motivo pelo qual a letra D é correta segue a mesma lógica do motivo que a C é, se um objeto do tipo SortOf tiver os atributos bal, code e rate iguais aos do outro, então os dois objetos são considerados iguais.

diegobrandao

Não entendi porque esta alternativa é considerada correta, uma vez que a variável “rate” não é utilizada na definição do hashCode()
Foi por isso que não entendi…

public int hashCode(){   
        return (code.length() * bal);   
    }
G

diegobrandao:

Não entendi qual foi sua dúvida aqui. O motivo pelo qual a letra D é correta segue a mesma lógica do motivo que a C é, se um objeto do tipo SortOf tiver os atributos bal, code e rate iguais aos do outro, então os dois objetos são considerados iguais.

Não entendi porque esta alternativa é considerada correta, uma vez que a variável “rate” não é utilizada na definição do hashCode()
Foi por isso que não entendi…

public int hashCode(){ return (code.length() * bal); }

mas se vc multiplicar os dois lados de uma expressão por uma mesma constante, os valores tem que continuar sendo iguais.

[]s
Gunnar

Criado 9 de dezembro de 2008
Ultima resposta 9 de dez. de 2008
Respostas 3
Participantes 3