GOOGLE ADS

понедельник, 25 апреля 2022 г.

Нужно ли определять методы equals и hashCode для inheritedClass и Base Class?

Мне интересно, должен ли я определять 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 поможет вам создать правильную реализацию этих методов в зависимости от полей, полезных в вашем контексте.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...