Автоматически генерирует 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
в любом случае, так и будет, и пусть NullPointerException
быть брошенным естественно, потому что произошло нарушение контракта).
Если не считать того, что есть способ настроить equals
а также hashCode
Шаблон, сгенерированный Eclipse, тоже подойдет.
Смежные вопросы
1 ответ
Я бы сказал, что эти нулевые проверки не являются ненужными. Если они были опущены, то equals
а также hashcode
будет плохо себя вести на объектах, которые не проходят проверку, и это вызовет всевозможные проблемы.
СЛЕДОВАТЬ ЗА
Тогда какая польза от аннотаций @NonNull, если вы все равно собираетесь проверять наличие нуля везде?
Смысл аннотации состоит в том, чтобы объявить, что действительный экземпляр не имеет null
в этом атрибуте, и позволяют реализовать механизм проверки на основе этого объявления.
Однако ничто не требует, чтобы экземпляры всегда были действительными. Действительно, если бы это было так, то вы столкнулись бы со всевозможными проблемами реализации (например) при создании и связывании экземпляров вместе.