Автоматически генерирует equals и hashCode в Eclipse, который знает аннотации @NonNull - PullRequest
3 голосов
/ 04 декабря 2010

Есть ли способ настроить 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 Ответ

2 голосов
/ 04 декабря 2010

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

FOLLOWUP

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

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

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

...