Основы аннотаций
Аннотация описывает код, а не заменяет его
Аннотация — это метаданные, прикреплённые к элементу программы.
Запись начинается с символа @ и может стоять у класса,
метода, поля, параметра и других элементов — если тип конкретной аннотации разрешает такое использование.
class ReportService {
@Override
public String toString() {
return "ReportService";
}
}
Здесь @Override сообщает компилятору о намерении переопределить метод.
Если сигнатура окажется неправильной и переопределения на самом деле нет, компилятор сообщит об ошибке.
Сама аннотация не вставляет новый метод и не выполняет скрытый код.
Кто использует аннотации
Метаданные могут быть полезны на разных этапах жизни программы.
Одни аннотации читает компилятор, другие обрабатывают инструменты сборки или генераторы кода,
а некоторые сохраняются до времени выполнения и могут быть прочитаны библиотекой через Reflection.
Поэтому одинаковая внешне запись @Something ещё не говорит, когда именно она будет использована.
Аннотации со значениями
Аннотация может содержать элементы — именованные значения, которые задаются при использовании. Если у элемента есть значение по умолчанию, его можно не указывать.
@SuppressWarnings("unused")
void prepareReport() {
int draftVersion = 1;
}
В данном случае строка "unused" — значение элемента аннотации.
У разных аннотаций набор таких элементов свой: это часть их объявления, а не произвольные параметры.