Что такое аннотации в Java и для чего они нужны?

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

Ответ

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

Основные применения:

  1. Информация для компилятора — например, @Override проверяет, что метод действительно переопределяет родительский, а @SuppressWarnings подавляет предупреждения.
  2. Обработка во время выполнения (Runtime) — аннотации доступны через Reflection API (например, @Deprecated).
  3. Генерация кода и конфигурация — используются фреймворками (Spring, Hibernate) для настройки поведения.
  4. Документирование — могут быть обработаны инструментами для создания документации.

Пример:

@Override
public String toString() {
    return "Переопределённый метод";
}

Здесь @Override — это встроенная аннотация, которая заставляет компилятор проверить сигнатуру метода.