Мои классы Java представляют собой сущности внутри базы данных, и я считаю целесообразным переопределить метод equals
моих классов, чтобы сделать сравнения по id. Так, например, в моем классе Transaction
у меня есть этот фрагмент кода
@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
, но это означает, что два объекта можно считать равными, даже если они принадлежат к разным классам, если они имеют одинаковый идентификатор.
Есть ли другой способ?