Интерфейс 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 имеет тип аннотации AT. Если AT — это повторяемый тип аннотации, то тип содержащей аннотации — ATC.
Аннотация A прямо присутствует на конструкции C, если выполняется одно из условий:
-
A явным или неявным образом объявлена как применяющаяся к представлению исходного кода C.
Как правило, если в исходном коде представления C появляется ровно одна аннотация типа AT, то A явно объявлена как применяющаяся к C. Аннотация типа AT на компоненте записи может быть неявным образом распространена на связанные обязательные члены. Аннотации типа, изменяющие тип компонента записи, также могут распространяться на обязательные члены. Распространение аннотаций на обязательные члены регулируется правилами, приведенными в Спецификации языка Java. Если на C присутствует несколько аннотаций типа AT, то, если AT — это повторяемый тип аннотации, аннотация типа ATC неявным образом объявлена на C.
- Представление A появляется в исполняемом выводе для C, например, в атрибутах
RuntimeVisibleAnnotations(JVMS 4.7.16) илиRuntimeVisibleParameterAnnotations(JVMS 4.7.17) файла класса.
Аннотация A присутствует на конструкции C, если выполняется одно из условий:
- A прямо присутствует на C.
- Ни одна аннотация типа AT не прямо присутствует на C, и C — это класс, и AT наследуемый, и A присутствует в суперклассе C.
- AT — это повторяемый тип аннотации с содержащим типом аннотации ATC.
- Аннотация типа ATC прямо присутствует на C, и A — это аннотация, включённая в результат вызова метода
valueнапрямую присутствующей аннотации типа ATC.
- A прямо или косвенно присутствует на C.
- Ни одна аннотация типа AT не прямо или косвенно присутствует на C, и C — класс, и AT наследуемый, и A связана с суперклассом C.
- См. Спецификацию языка Java:
- 9.6 Интерфейсы аннотаций
9.6.4.3@Inherited
9.7.4 Где могут располагаться аннотации
9.7.5 Несколько аннотаций одного и того же интерфейса
- С:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<A extends Annotation> |
getAnnotation |
Возвращает аннотацию этой конструкции указанного типа, если такая аннотация присутствует, иначе null. |
List<? extends AnnotationMirror> |
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, 2021, 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/17/docs/api/java.compiler/javax/lang/model/AnnotatedConstruct.html