Мои классы Java представляют собой сущности внутри базы данных, и я считаю целесообразным переопределить метод моих классов, чтобы сделать сравнения по id. Так, например, в моем Transaction
классе у меня есть этот кусок кодаИспользуйте instanceof, не зная тип
@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);
}
Теперь это кажется немного некрасиво мне, что каждый класс имеет один и тот же кусок кода, только имя класса изменился. Я думал о том, чтобы мои классы расширяли суперкласс MyEntity
, где я бы написал вышеописанный метод, заменив instanceof Transaction
чем-то вроде instanceof this.getClass()
, но это не представляется возможным. Я также подумал о замене его на instanceof MyEntity
, но это означает, что два объекта можно считать равными, даже если они принадлежали к разным классам, если они имеют одинаковый идентификатор. Есть ли другой способ?
Для этого приложения наиболее подходящим является второй метод, который требует того же класса. – erickson
или 'if (this.getClass()! = That.getClass())' ... :) – ZhongYu