Le mie classi Java rappresentano entità all'interno di un database e trovo pratico sovrascrivere il metodo equals
delle mie classi per fare confronti con id. Così, per esempio nella mia classe Transaction
ho questo pezzo di codiceUtilizzare instanceof senza conoscere il tipo
@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);
}
Ora sembra un po 'brutto per me che ogni classe contiene lo stesso pezzo di codice, con il solo nome della classe cambiato. Ho pensato di rendere le mie classi estendere una superclasse MyEntity
dove scriverei il metodo sopra, sostituendo instanceof Transaction
con qualcosa come instanceof this.getClass()
, ma questo non sembra possibile. Ho anche pensato di sostituirlo con instanceof MyEntity
, ma ciò significa che due oggetti potrebbero essere considerati uguali anche se appartenessero a classi diverse, purché abbiano lo stesso id. C'è qualche altro modo?
Per questa applicazione, il secondo metodo che richiede la stessa classe sembra il più appropriato. – erickson
o 'if (this.getClass()! = That.getClass())' ... :) – ZhongYu