Meine Java-Klassen stellen Entitäten innerhalb einer Datenbank dar, und ich finde es praktisch, die equals
-Methode meiner Klassen zu überschreiben, um Vergleiche anhand der ID durchzuführen. So zum Beispiel in meiner Transaction
Klasse habe ich dieses Stück CodeVerwenden Sie instanceof, ohne den Typ zu kennen
@Override
public boolean equals(Object other){
if (other == null) return false;
if (other == this) return true;
if (!(other instanceof Transaction))return false;
Transaction otherTrans = (Transaction) other;
if (id == null || otherTrans.id == null) return false;
return id.equals(otherTrans.id);
}
Jetzt ist es ein bisschen hässlich ich scheint, dass jede Klasse das gleiche Stück Code hält, nur mit dem Namen der Klasse geändert. Ich dachte darüber nach, meine Klassen erweitern eine Superklasse MyEntity
, wo ich die obige Methode schreiben würde, ersetzen instanceof Transaction
mit etwas wie instanceof this.getClass()
, aber dies scheint nicht möglich zu sein. Ich dachte auch darüber nach, es durch instanceof MyEntity
zu ersetzen, aber das bedeutet, dass zwei Objekte als gleich angesehen werden können, auch wenn sie zu verschiedenen Klassen gehören, solange sie dieselbe ID haben. Gibt es einen anderen Weg?
Für diese Anwendung scheint die zweite Methode, die die gleiche Klasse erfordert, am besten geeignet. – erickson
oder 'if (this.getClass()! = That.getClass())' ... :) – ZhongYu