Я выдал кучу голосов для других пользователей, но просто для того, чтобы дать моим двум центам только три аннотации, которые я использую с какой-либо регулярностью в разработке, это основные аннотации, используемые непосредственно компилятором:
@ Override - Отлично подходит для того, чтобы сделать это явным в вашем коде, когда вы переопределяете другой метод. Также имеет дополнительное преимущество пометки как ошибки компиляции, если вы не переопределяете метод так, как вы думаете (см. Этот другой пост SO ). Этот флаг информирует компилятор о том, что вы собираетесь что-то переопределить, поэтому, если вы этого не сделаете (например, вы забудете аргумент в сигнатуре метода), компилятор его перехватит.
@ Устаревший - Укажите, что вы отмечаете как что-то, что не должно использоваться с этого момента. Компилятор сгенерирует предупреждения для использования любых элементов кода, которые вы пометили как устаревшие. В целом, в устарении говорится, что «это было здесь раньше, но в будущей версии это может исчезнуть». Убедитесь, что вы также используете связанный флаг "@deprecated" Javadoc вместе с этим, чтобы сообщить людям, что им следует использовать вместо этого.
@ SuppressWarnings - Скажите компилятору подавить определенные предупреждения, которые он мог бы генерировать в противном случае. Это может быть полезно для таких вещей, как когда вы намеренно хотите использовать устаревшие методы, вы можете заблокировать предупреждение об устаревании. Я часто использую его, чтобы заблокировать всеобщее любимое предупреждение «Serialization UID» для сериализуемых классов (независимо от того, должны ли вы сделать это еще один спор в другой раз). Просто удобно в тех случаях, когда вы знаете, что то, что вы делаете, генерирует предупреждение, но вы на 100% уверены, что вам нужно именно такое поведение.
Посмотрите Руководство по аннотациям Sun и ознакомьтесь с разделом "Аннотации, используемые компилятором". Эти трое обсуждаются довольно долго.