Ответ
Аннотации — это форма метаданных, которые добавляются к исходному коду (классам, методам, полям, параметрам). Они не изменяют семантику программы напрямую, но предоставляют информацию для:
- Компилятора (для проверок или генерации кода).
- Среды выполнения (JVM) через механизм рефлексии.
- Различных инструментов и фреймворков (для конфигурации, генерации кода, обработки).
Основные цели применения:
-
Информация для компилятора:
@Override— проверяет переопределение метода.@Deprecated— помечает устаревший элемент.@SuppressWarnings— отключает предупреждения.
@Override public String toString() { return "Custom Object"; } -
Конфигурация в фреймворках (Runtime-обработка):
- Spring:
@Component,@Autowired,@RequestMapping. - Hibernate/JPA:
@Entity,@Id,@Column. - JUnit:
@Test,@BeforeEach.
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_name") private String name; } - Spring:
-
Обработка на этапе компиляции (Annotation Processing): Генерация дополнительного кода (например,
@Getter,@Setterиз Project Lombok).
Аннотации делают код декларативным, сокращают объем XML-конфигураций и повышают удобство сопровождения.