Мне интересно, должен ли я определять equalsи hashCodeметоды в Productклассе, как показано ниже?
public abstract class BaseEntity {
// properties
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object other) {
return super.equals(other);
}
}
public class Product extends BaseEntity {
// properties
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object other) {
return super.equals(other);
}
}
Решение проблемы
Бесполезно определять equalsи hashcodeметоды, вызывающие их суперреализацию. Не определяя их вообще, будет использоваться реализация super. В этом случае они будут использовать Objectреализацию hashcode и equals в любом случае (определяя их вызовом super.equals или super.hashCode или не определяя их вообще).
Не забудьте сделать свою реализацию hashcode и equals, если вам нужно их использовать. Метод equalsиспользуется для проверки того, являются ли два объекта логически одним и тем же объектом, проверяя их содержимое. Можно использовать напрямую или не напрямую, например, при поиске объекта в коллекции. Хэш-код используется для ключей HashMap и значений HashSet.
Modern ide поможет вам создать правильную реализацию этих методов в зависимости от полей, полезных в вашем контексте.
Комментариев нет:
Отправить комментарий