Интерфейс аннотации Target
@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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/annotation/Target.html