Интерфейс аннотации Цель
@Documented @Retention(RUNTIME) @Target(ANNOTATION_TYPE) public @interface Target
java.lang.annotation.ElementType. Если @Target мета-аннотация отсутствует у интерфейса аннотации T, то аннотация типа T может быть записана в качестве модификатора для любого объявления.
Если @Target мета-аннотация присутствует, компилятор будет применять ограничения использования, указанные ElementType константами перечисления, в соответствии с JLS 9.7.4.
Например, эта @Target мета-аннотация указывает, что объявленный интерфейс сам является интерфейсом мета-аннотации. Он может использоваться только для объявления интерфейса аннотации:
@Target(ElementType.ANNOTATION_TYPE)
public @interface MetaAnnotationType {
...
}
Эта @Target мета-аннотация указывает, что объявленный класс или интерфейс предназначен только для использования в качестве вложенного класса или интерфейса в сложных объявлениях интерфейсов аннотаций. Он не может использоваться для прямой аннотации:
@Target({})
public @interface MemberInterface {
...
}
Это ошибка времени компиляции, если одна ElementType константа появляется более одного раза в аннотации @Target. Например, следующая @Target мета-аннотация недопустима:
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.FIELD})
public @interface Bogus {
...
}
- См. Спецификацию языка Java:
- 9.6.4.1 @Target
9.7.4 Где могут появляться аннотации
9.7.5 Несколько аннотаций одного и того же интерфейса
- С:
- 1.5
Краткое описание требуемых элементов
| Модификатор и тип | Требуемый элемент | Описание |
|---|---|---|
ElementType[] |
value |
Возвращает массив типов элементов, к которым может применяться интерфейс аннотации. |
Подробное описание элементов
value
ElementType[] value
- Возвращает:
- массив типов элементов, к которым может применяться интерфейс аннотации
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/annotation/Target.html