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 | Указывает комплиятору подавить предупреждения указанные в строковой форме |