Quanto eu tento sobrescrever os métodos equals() e hashCode() em subclasses, usando o "Generate hashCode() and equals()" do Eclipse, este retorna o erro "there are no non-static fields in this class. Cannot create equals() and hashcode() methods" Como se não enxergasse os atributos da classe estendida. É possível contornar este problema?
Dado este problema eu fiz o "Generate hashCode() and equals()" na superclasse e adicionei a primeira condição no equals(): if(this.getClass..), para que ao invocar o equals() em objetos de diferentes subclasses o retorno seja false. Porém o hashCode() continua retornando o mesmo para objetos de diferentes subclasses com o mesmo 'numero', alguém pode me ajudar com isto? Obs: 'numero' é um atributo da superclasse tipo uma ID.
@Override
public boolean equals(Object obj) {
if (this.getClass().equals(obj.getClass()) == false)
return false;
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Conta))
return false;
Conta other = (Conta) obj;
if (numero != other.numero)
return false;
return true;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + numero;
return result;
}
}