Аннотации в Java – это специальные формы синтаксических метаданных. Аннотация может быть добавлена в исходный код приложения. Используется для:

  • анализа кода;
  • компиляции;
  • выполнения приложения.

Аннотации могут быть присвоены пакетам, классам, методам, параметрам и переменным. Обладают элементарной формой представления и являются своеобразными тегами. Они служат для определения дополнительной информации. К функциональности никакого отношения не имеют.

Форма представления – @НазваниеАннотации.

Далее будут рассмотрены все аннотации в Java. Огромной популярностью среди них пользуется override.

С чем помогают

Аннотации в Джаве не имеют функциональности, зато помогают с необязательными данными:

  1. Сведения для компиляторов. Они могут использовать аннотации для того, чтобы обнаруживать ошибки или подавлять предупреждения.
  2. Данные для разработчиков. В этом случае annotations – это своеобразные подсказки. Они делают исходный код более понятным и читабельным.
  3. Обработка времени компиляции и развертывания. Программные средства смогут обработать рассматриваемый компонент для формирования кодов, XML-документов и так далее.
  4. Обработка времени выполнения. Annotations могут быть проверены во время выполнения для прохождения тестов.

Аннотации в Java – это целый набор предопределенных объектов. В данном языке разработки можно создавать их самостоятельно. Далее будут представлены наиболее распространенные и важные варианты.

SuppressWarnings

Предупреждения компилятора будут полезны, если разработчик их читает. Только они нередко создают дополнительный «шум» в терминале. При помощи @SuppressWarnings удается подавлять соответствующие предупреждения. Их можно убрать полностью или выбрать конкретные «сообщения», которых хочется избежать.

Аннотации в Java и override

Здесь первая строка отвечает за сокрытие предупреждения о непроверенных методах (unchecked). Можно также воспользоваться удалением «сообщений» об устаревших методах. Тогда в приведенном примере необходимо заменить unchecked на deprecated.

Deprecated

@deprecated указывает на то, что аннотируемый метод устарел и не поддерживается разработчиками. Компилятор не будет его обрабатывать иначе, чем обычный метод. Возвращаемый ответ здесь не идеален. Это документация непосредственно для разработчиков программного обеспечения.

Author

Еще один простой вариант. Означает документацию автора метода или документа. Чаще всего соединяется с дополнительными сведениями. Пример – версия программы, номер релиза и так далее.

В Oracle теги пишутся в следующем порядке:

  • author – документация автора кода;
  • version – обеспечение только одного обновления за раз, позволяя миновать блокировки;
  • param – документация имени и описание имеющихся параметров;
  • return – «справка» о возвращаемом значении;
  • throws – документирование проверенных исключений;
  • see – ссылка или указание на нее;
  • since – версия приложения, в которой были добавлены новые возможности и операции;
  • deprecated – указание на то, что код перестал поддерживаться разработчиками.

Такой порядок делает программный код более понятным и читабельным. Это стандарт, о котором необходимо помнить каждому разработчику.

Override

Аннотация @override означает «маркер». Она применяется только к методам. Данная аннотация указывает компилятору на то, что компонент подкласса переопределяет элемент родительского класса или суперкласса. Она не является обязательной. При переопределении метода помогает избежать ошибок.

Метод с @override будет «инициализировать» метод суперкласса. Если в родительском классе или интерфейсе соответствующий элемент кода не обнаружен, на экране будет появляться ошибка компиляции или интерпретации. Аннотированный метод переопределяет метод суперкласса.

class Avatar { public static void destroyEvil() { … } // переопределенный } class Aang extends Avatar { @Override // overriding method public void destroyEvil() { … } }

Выше – форма примера кода, который позволяет лучше разобраться в этой аннотации. А вот как он будет выглядеть в редакторе:

Аннотации в Java и override

Кроме предопределенных аннотаций в Java есть тест-аннотации.

Тест-аннотации

Формирование тестов – важный этап жизненного цикла разработки. Написание самой кодовой базы тоже требует определенного внимания. В Java имеются аннотации, используемые явно для тестов.

Test

Сообщить JUnit, что аннотированный метод должен обрабатываться в качестве теста. Для его запуска создается новый экземпляр класса, а затем происходит непосредственный вызов тестового метода.

Здесь присутствуют два параметра:

  1. Timeout – приводит к сбою метода тестирования, если на его выполнение затрачивается больше указанного времени. Измерения – миллисекунды.
  2. Expected – означает, что тестовый метод должен выдавать то или иное исключение. В противном случае тестирование завершается неудачей.

Эти параметры не являются обязательными. Устанавливаются программистом только в случае необходимости.

Ignore

Запись, обозначающая необходимость игнорирования теста или их группу. Это нужно для того, чтобы избежать потенциального сбоя функционирования программы. Применяется в нескольких сценариях: если метод помечен @Test, а также при необходимости игнорирования всех тестов на уровне класса.

Before

@Before значит, что все помеченные таким тегом методы будут выполняться перед каждым тестом. Есть схожая аннотация – @beforeAll. Она применяется, когда перед серией тестов требуется выполнить дорогостоящую операцию. Пример – запуск сервера или корректировка имеющейся базы данных.

After

Противоположность предыдущему варианту. Позволяет не переопределить методы, которые выполняются до тестирования, а указывает на то, что должно быть запущено после активации теста. @afterAll и @afterClass будут выполняться после всех тестов класса. Все они должны быть статическими.

Интересует Java? Добро пожаловать на курс в Otus!