Mensagem na análise do código

3 respostas
sabrina.passos

Boa tarde amigos!

Onde trabalho sou obrigada a utilizar o Software Analyser da IBM para verificar o meu código fonte. Em uma das análises recebi a seguinte recomendação:
“Sempre marque o tipo de objeto em um método equals”
sendo que meus métodos equals, ao meu ver não possuem nenhum problema na subescrita. Abaixo listo alguns deles:

public boolean equals(Object obj) {

if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	AgenciaBancaria other = (AgenciaBancaria) obj;
	
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	return true;
}
outro:

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

Banco other = (Banco) obj;

if (id == null) {

if (other.id != null)

return false;

} else if (!id.equals(other.id))

return false;

return true;

}

O que eu gostaria de entender é o que significa marcar o tipo de objeto. Alguém faz isso??

3 Respostas

evertonsilvagomesjav

Nunca vi isso, mas sera que nao tem haver com o @Override?

Giulliano

Isto é meio estranho. Eu trabalho com o RSA aqui na IBM e quando eu mando ele gerar o equals, e eu nunca faço isso, mas quando ele gera, o código é exatamente igual ao código que vc postou. Então como pode uma outra ferramenta da IBM invalidar isso.

Deve haver algum bug nesta verificação.

Outra coisa q devemos prestar atenção é que nem sempre o “smell code” destas ferramentas são verdadeiras.

Giulliano

Só mais uma observação talvez ele queira que vc faça isso:

if (obj instanceof AgenciaBancaria) {
   AgenciaBancaria other = (AgenciaBancaria) obj;
}

Afinal AgenciaBancaria.class é igual ao obj.Class conforme esta comparação if (getClass() != obj.getClass()) porém a instância pode ser outra se vc usou herança.

Criado 1 de setembro de 2010
Ultima resposta 1 de set. de 2010
Respostas 3
Participantes 3