Интерфейс 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.
Обычно, если ровно одна аннотация типа AI появляется в исходном коде представления C, то 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.
- Ни одна аннотация типа AI не присутствует непосредственно на C, и C является классом, и AI является наследовательным, и A присутствует в суперклассе C.
- AI — это интерфейс повторяющейся аннотации с содержащим интерфейсом аннотации AIC.
- Аннотация типа AIC непосредственно присутствует на C, и A является аннотацией, включённой в результат вызова метода
valueнепосредственно присутствующей аннотации типа AIC.
- A непосредственно или косвенно присутствует на C.
- Ни одна аннотация типа AI не присутствует непосредственно или косвенно на C, и 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://download.java.net/java/early_access/jdk24/docs/api/java.compiler/javax/lang/model/AnnotatedConstruct.html