Интерфейс 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.
- Ни одна аннотация типа 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, 2023, 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/21/docs/api/java.compiler/javax/lang/model/AnnotatedConstruct.html