2016-07-25 3 views
18

У меня есть сущность, которая наследуется от других. С другой стороны, я использую проект lombok для уменьшения кода шаблона, поэтому я помещаю аннотацию @Data. Аннотацию @data с наследованием производит следующее предупреждение:Предупреждение равно/hashCode в @Data аннотация lombok с наследованием

Генерирование равна реализации, но/Hashcode без вызова суперкласса, даже если этот класс не распространяется java.lang.Object. Если это намеренно, добавьте '@EqualsAndHashCode (callSuper = false)' к вашему типу.

Возможно ли добавить аннотацию @EqualsAndHashCode (callSuper = true) или @EqualsAndHashCode (callSuper = false)? Если он не добавлен, то какой он callSuper = false или callSuper = true?

ответ

31

default value является false. Это тот, который вы получите, если не укажете его и не будете игнорировать это предупреждение.

Да, рекомендуется добавлять аннотацию @Data аннотаций @EqualsAndHashCode, которые расширяют что-то еще, кроме объекта. Я не могу сказать вам, нужны ли вам true или false, что зависит от вашей иерархии классов и должно быть проверено в каждом конкретном случае.

Однако для проекта или пакета вы можете настроить в lombok.config, чтобы вызвать супер методы, если он не является прямым подклассом Object.

lombok.equalsAndHashCode.callSuper = call 

Для configuration system documentation о том, как это работает, и @EqualsEndHashCode documentation для поддерживаемых ключей конфигурации.

Раскрытие информации: Я разработчик ломбок.

7

@EqualsAndHashCode(callSuper=true) должно разрешить предупреждение.

Смежные вопросы