Аннотация Documented
Аннотация Documented - это мета-аннотация,
которая сообщает компилятору Java о том, что
помеченная ею аннотация должна быть включена
в документацию, генерируемую утилитой javadoc.
По умолчанию аннотации не попадают в генерируемую
документацию, и если вы хотите, чтобы ваша
собственная аннотация отображалась в Javadoc,
её необходимо пометить Documented.
Параметров у этой аннотации нет.
Важно понимать, что Documented влияет
только на генерацию документации и никак
не влияет на поведение программы во время
выполнения. Для того чтобы аннотация была
доступна в рантайме, необходимо также
указать RetentionPolicy.RUNTIME
через аннотацию Retention.
Синтаксис
@Documented
public @interface AnnotationName
{
// elements
}
Пример
Давайте создадим собственную аннотацию,
помеченную Documented, и применим её
к методу:
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String value();
}
public class Main
{
@MyAnnotation("test")
public static void main(String[] args)
{
System.out.println("Annotation applied");
}
}
Результат выполнения кода:
"Annotation applied"
Пример
Давайте проверим через рефлексию, что аннотация доступна во время выполнения:
import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation
{
String value();
}
public class Main
{
@MyAnnotation("test")
public static void main(String[] args) throws Exception
{
Method method = Main.class.getMethod("main", String[].class);
Annotation[] annotations = method.getAnnotations();
System.out.println(annotations.length);
}
}
Результат выполнения кода:
1
Смотрите также
-
аннотация
Annotation,
которая является базовым интерфейсом всех аннотаций -
аннотация
Retention,
которая задаёт политику хранения аннотации -
аннотация
Inherited,
которая позволяет наследовать аннотацию подклассами -
аннотация
Target,
которая ограничивает область применения аннотации