Интерфейс AnnotatedConstruct
- Все известные подинтерфейсы:
ArrayType, DeclaredType, Element, ErrorType, ExecutableElement, ExecutableType, IntersectionType, ModuleElement, NoType, NullType, PackageElement, Parameterizable, PrimitiveType, QualifiedNameable, RecordComponentElement, ReferenceType, TypeElement, TypeMirror, TypeParameterElement, TypeVariable, UnionType, VariableElement, WildcardType
public interface AnnotatedConstruct
В приведённых ниже определениях аннотация A имеет интерфейс аннотации AI. Если AI — повторяемый интерфейс аннотации, типом контейнерной аннотации является AIC.
Аннотация A непосредственно присутствует в конструкции C, если выполняется одно из следующих условий:
-
A явно или неявно объявлена как применяемая к представлению C в исходном коде.
Обычно, если в исходном коде, представляющем C, присутствует ровно одна аннотация типа AI, то A явно объявлена как применяемая к C. Аннотация типа AI для компонента записи может неявно распространяться на связанные обязательные члены. Аннотации типа, изменяющие тип компонента записи, также могут распространяться на обязательные члены. Распространение аннотаций на обязательные члены регулируется правилами, приведёнными в Спецификации языка Java (JLS 8.10.1). Если для C присутствует несколько аннотаций типа AI, то, если AI является повторяемым интерфейсом аннотации, аннотация типа AIC неявно объявляется для C.
- Представление A содержится в исполняемом выходном файле для C, например в атрибутах
RuntimeVisibleAnnotations(JVMS 4.7.16) илиRuntimeVisibleParameterAnnotations(JVMS 4.7.17) файла класса.
Аннотация A присутствует в конструкции C, если выполняется одно из следующих условий:
- A непосредственно присутствует в C.
- В C непосредственно не присутствует ни одной аннотации типа AI, C является классом, AI допускает наследование, а A присутствует в суперклассе C.
- AI является повторяемым интерфейсом аннотации с контейнерным интерфейсом аннотации AIC.
- Аннотация типа AIC непосредственно присутствует в C, а A — это аннотация, включённая в результат вызова метода
valueдля непосредственно присутствующей аннотации типа AIC.
- A непосредственно или косвенно присутствует в C.
- В C непосредственно или косвенно не присутствует ни одной аннотации типа AI, C является классом, AI допускает наследование, а A связана с суперклассом C.
- См. Спецификацию языка Java:
- 9.6 Интерфейсы аннотаций
9.6.4.3@Inherited
9.7.4 Допустимые места размещения аннотаций
9.7.5 Несколько аннотаций одного интерфейса
- Начиная с:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<A extends Annotation> |
getAnnotation |
Возвращает аннотацию этого конструкта указанного типа, если такая аннотация присутствует; в противном случае возвращает null. |
List |
getAnnotationMirrors() |
Возвращает аннотации, которые непосредственно присутствуют в этом конструкте. |
<A extends Annotation> |
getAnnotationsByType |
Возвращает аннотации указанного типа, которые связаны с этим конструктом. |
Подробное описание методов
getAnnotationMirrors
List<? extends AnnotationMirror> getAnnotationMirrors()
- Возвращает:
- аннотации, непосредственно присутствующие в этом конструкте; пустой список, если таких аннотаций нет
getAnnotation
<A extends Annotation> A getAnnotation(Class<A> annotationType)
null. Возвращённая этим методом аннотация может содержать элемент со значением типа Class. Это значение нельзя вернуть напрямую: информация, необходимая для поиска и загрузки класса (например, используемый загрузчик классов), недоступна, а сам класс может быть вообще недоступен для загрузки. Попытка прочитать объект Class, вызвав соответствующий метод у возвращённой аннотации, приведёт к возникновению исключения MirroredTypeException, из которого можно получить соответствующий TypeMirror. Аналогично, попытка прочитать элемент со значением типа Class[] приведёт к возникновению исключения MirroredTypesException.
Примечание: Этот метод отличается от других методов этого и связанных интерфейсов. Он работает с данными рефлексии времени выполнения — представлениями интерфейсов аннотаций, загруженными в данный момент в виртуальную машину, — а не с представлениями, определёнными и используемыми в этих интерфейсах. Поэтому вызовы методов возвращённого объекта аннотации могут приводить ко многим исключениям, возникающим при вызове методов объекта аннотации, возвращённого средствами основной рефлексии. Этот метод предназначен для вызывающего кода, написанного для работы с известным фиксированным набором интерфейсов аннотаций.
- Параметры типа:
A— интерфейс аннотации- Параметры:
-
annotationType— объектClass, соответствующий интерфейсу аннотации - Возвращает:
- аннотацию этого конструкта указанного типа, если такая аннотация присутствует; в противном случае возвращает
null - См. Спецификацию языка Java:
- 9.6.1 Элементы интерфейсов аннотаций
- См. также:
getAnnotationsByType
<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType)
getAnnotation(Class) тем, что проверяет, является ли его аргумент повторяемым интерфейсом аннотации, и, если это так, пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию. Возвращённые этим методом аннотации могут содержать элемент со значением типа Class. Это значение нельзя вернуть напрямую: информация, необходимая для поиска и загрузки класса (например, используемый загрузчик классов), недоступна, а сам класс может быть вообще недоступен для загрузки. Попытка прочитать объект Class, вызвав соответствующий метод у возвращённой аннотации, приведёт к возникновению исключения MirroredTypeException, из которого можно получить соответствующий TypeMirror. Аналогично, попытка прочитать элемент со значением типа Class[] приведёт к возникновению исключения MirroredTypesException.
Примечание: Этот метод отличается от других методов этого и связанных интерфейсов. Он работает с данными рефлексии времени выполнения — представлениями интерфейсов аннотаций, загруженными в данный момент в виртуальную машину, — а не с представлениями, определёнными и используемыми в этих интерфейсах. Поэтому вызовы методов возвращённого объекта аннотации могут приводить ко многим исключениям, возникающим при вызове методов объекта аннотации, возвращённого средствами основной рефлексии. Этот метод предназначен для вызывающего кода, написанного для работы с известным фиксированным набором интерфейсов аннотаций.
- Параметры типа:
A— интерфейс аннотации- Параметры:
-
annotationType— объектClass, соответствующий интерфейсу аннотации - Возвращает:
- аннотации этого конструкта указанного типа, если они присутствуют в этом конструкте; в противном случае — пустой массив
- См. Спецификацию языка Java:
- 9.6 Интерфейсы аннотаций
9.6.1 Элементы интерфейсов аннотаций
- См. также:
© 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.compiler/javax/lang/model/AnnotatedConstruct.html