Skip to content

Latest commit

 

History

History
44 lines (34 loc) · 2.69 KB

Annotations.md

File metadata and controls

44 lines (34 loc) · 2.69 KB
title tags
Annotations
Java, Basic, Annotation

Аннотации

Аннотации это метаданные для рефлексии (в основном).

@interface MyAnno {
    String str();
    int val();
}

...

@MyAnno(str = "Example", val = 100)
public static void myMeth() { // ...

Нельзя использовать слово extends, но аннотации автомтически расширяют интерфейс Annotation. Он объявлен в пакете java.lang.annotation.

Правила удержания аннотаций (жизненный путь)

Правила указывают когда аннотация отбросится. Они указаны в перечислении java.lang.annotaion.RetentionPolicy

  • SOURCE - отбрасываются после компиляции
  • CLASS - сохраняются в файле .class (не работает для аннотаций локальных объявлений
  • RUNTIME - доступны во время работы JVM

Для указания нужно добавить аннотацию @Retention(RetentionPolicy.RUNTIME) к объявлению собственной аннотации.

Встроенные аннотации

Название Описание
@Retention Указывает время удержания аннотации (выше)
@Documented Предназначена для аннотации аннотаций
@Target Указывает что можно аннотировать данной аннотацией
@Inherited Предназначена для аннотации аннотаций. Что про наследование
@Override Можно использовать, когда переопределяю метод
@Deprecated
@FunctionalInterface Значит, что интерфейс содержит только один абстрактный метод
@SafeVarargs
@SuppressWarnings Указывает комплиятору подавить предупреждения указанные в строковой форме