Руководство по использованию меток, также известное как краткое описание, - это краткая аннотация, описывающая, когда стоит использовать какую-либо метку на этом сайте.
Аннотация - это специальная форма синтаксических метаданных, которая может быть добавлена в исходный код. Аннотации используются для анализа кода, компиляции или выполнения.
В общем они выполняют следующие функции:
Даёт информацию для компилятора / интерпретатора
Даёт информацию о различных инструментах для генерации другого кода, конфигураций и т.д.
Аннотации помечают знакомые собачки @.
В Java для разработки аннотаций взята система интерфейс .
[1136] Аннотация должна быть привязана к чему-либо. Это может быть поле, метод, класс. Воспользуйтесь Target
.
Аннотация Retention
определяет время жизни аннотации. В ней следует передать одно из значений перечислений RetentionPolicy
, которое содержит следующие значения:
.class
во время компиляции. .class
во время компиляции и выполнения Также есть возможность добавления значений по умолчанию , которые содержат значение по умолчанию, это будет применимо, если ему не будет указано значение. Для таких членов существует ключевое слово default .
Пример простой аннотации:
@Target({ElementType.METHOD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation{ String name(); int value() default -1; }
Также различаются аннотации - маркеры , которые не содержат членов, которые появляются на что - то; одночленные аннотации для таких случаев можно применять короткую
Вот так могут выглядеть две вышеописанные разновидности аннотаций:
@interface MonomialAnnotation{ int val(); } @interface Marker{ }
Чтоб получить мета информации аннотации, которые она должна быть RUNTIME , то, что будет аннотироватся, должно быть публично . Вот так можно получить метоинформацию:
@MyAnnotation(str="Пример аннотации", val = 34) public static void infoMeto(){ Main ob=new Main(); try{ Class<?> c = ob.getClass(); Method cMethod = c.getMethod("infoMeto"); MyAnnotation annotation=cMethod.getAnnotation(MyAnnotation.class); System.out.println("Аннотация infoMeto(): "+annotation.str()+" "+annotation.val()); } catch (NoSuchMethodException e) { System.out.println("Метод не найден"); } }
] o7planning [+1146]