Что такое аннотация в Java?

«Что такое аннотация в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аннотация в Java — это форма метаданных, которая добавляет декларативную информацию к классам, методам, полям и другим элементам кода. Они не влияют напрямую на выполнение программы, но могут обрабатываться компилятором, инструментами сборки или через механизм рефлексии во время выполнения.

Основные цели:

  • Предоставление информации для компилятора (например, @Override, @Deprecated).
  • Обработка во время компиляции или развертывания (генерация кода, конфигурация).
  • Извлечение информации во время выполнения через рефлексию (используется в фреймворках).

Пример встроенной аннотации:

@Override
public String toString() {
    return "Пример";
}

Типы аннотаций:

  1. Встроенные (стандартные): @Override, @Deprecated, @SuppressWarnings, @FunctionalInterface.
  2. Мета-аннотации (для создания своих аннотаций): @Retention, @Target, @Documented, @Inherited.
  3. Пользовательские аннотации, создаваемые разработчиком.

Практическое применение: Аннотации активно используются в Spring (для конфигурации бинов), Hibernate/JPA (для маппинга сущностей), Lombok (для генерации кода) и в модульном тестировании (JUnit).