Как создать свою аннотацию

Аннотация задается описанием соответствующего интерфейса. Например так:

import java.lang.annotation.*;
@Target(value=ElementType.FIELD)
@Retention(value= RetentionPolicy.RUNTIME)
public @interface Name {
     String name();
     String type() default  “string”;
}

Как видно из примера выше, аннотация определяется описанием с ключевым словом interface и может включать в себя несколько полей, которые можно задать как обязательными, так и не обязательными. В последнем случае подставляется default значение поля. Также из примера видно, что саму аннотацию можно пометить несколькими аннотациями. Разберемся для начала, чем можно пометить собственную аннотацию, и зачем.

  • @Retention позволяет указать жизненный цикл аннотации: будет она присутствовать только в исходном коде, в скомпилированном файле, или она будет также видна и в процессе выполнения. Выбор нужного типа зависит от того, как вы хотите использовать аннотацию, например, генерировать что-то побочное из исходных кодов, или в процессе выполнения стучаться к классу через reflection.
  • @Target указывает, что именно мы можем пометить этой аннотацией, это может быть поле, метод, тип и т. д.
  • @Documentedуказывает, что помеченная таким образом аннотация должна быть добавлена в javadoc поля/метода и т. д.
  • @Inherited помечает аннотацию, которая будет унаследована потомком класса, отмеченного такой аннотацией.

Oct. 22, 2023, Источник