Автоматическое создание equals и hashCode в Eclipse, которое знает аннотации @NonNull

Есть ли способ настроить Eclipse для автоматического создания hashCode и equals с учетом аннотаций @NonNull? В настоящее время мой Eclipse генерирует код с ненужными проверками null, даже в полях, отмеченных @NonNull.

Обратите внимание, что FindBugs будет вызывать предупреждения, которые эти нулевые проверки являются избыточными. Конечно, мы можем добавить @edu.umd.cs.findbugs.annotations.SuppressWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") к методам, но это, по-видимому, в первую очередь подрывает роль FindBugs и @NonNull.

Мне кажется, что наилучшим решением является Eclipse знать JSR 305 и генерировать equals и hashCode соответственно без null проверок (и если они null в любом случае, то пусть будет и пусть a NullPointerException выбрасывается естественным образом, поскольку произошло нарушение контракта).

Кроме того, было бы неплохо настроить шаблон equals и hashCode, сгенерированный Eclipse.

Связанные вопросы

1 ответ

Я бы сказал, что эти нулевые проверки не являются ненужными. Если они были опущены, то equals и hashcode будут ошибочно относиться к объектам, которые не проходят проверку, и это вызовет всевозможные проблемы.

Followup

Тогда какое использование аннотаций @NonNull, если вы все равно будете проверять нуль везде?

Пункт аннотации состоит в том, чтобы объявить, что действительный экземпляр не имеет null в этом атрибуте и позволяет реализовать механизм проверки на основе этого объявления.

Однако ничто не требует, чтобы экземпляры всегда были действительными. В самом деле, если это так, то при создании и объединении экземпляров вы столкнетесь со всеми проблемами реализации (например).

licensed under cc by-sa 3.0 with attribution.