Интерфейс AnnotatedConstruct
- Все известные подинтерфейсы:
-
ArrayType,DeclaredType,Element,ErrorType,ExecutableElement,ExecutableType,IntersectionType,ModuleElement,NoType,NullType,PackageElement,Parameterizable,PrimitiveType,QualifiedNameable,ReferenceType,TypeElement,TypeMirror,TypeParameterElement,TypeVariable,UnionType,VariableElement,WildcardType
public interface AnnotatedConstruct
Представляет конструкцию, которая может быть прокомментирована. Конструкция — это либо элемент, либо тип. Комментарии к элементу относятся к объявлению, в то время как комментарии к типу относятся к конкретному использованию имени типа. В этом интерфейсе используются термины непосредственно присутствующий, присутствующий, косвенно присутствующий и ассоциированный для точного описания тех комментариев, которые возвращаются определенными методами.
В определениях ниже, комментарий A имеет тип комментария AT. Если AT — это повторяющийся тип комментария, тип содержащего комментария — ATC.
Комментарий A непосредственно присутствует на конструкции C, если выполняется одно из следующих условий:
- A явно или неявно объявлен как применяемый к представлению исходного кода C.
Как правило, если ровно один комментарий типа AT появляется в исходном коде представления C, то A явно объявлен как применяемый к C. Если присутствует несколько комментариев типа AT на C, то если AT — это повторяющийся тип комментария, комментарий типа ATC неявно объявлен на C.
- Представление A появляется в исполняемом выводе для C, таком как атрибуты
RuntimeVisibleAnnotationsилиRuntimeVisibleParameterAnnotationsфайла класса.
Комментарий 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.
- С:
- 1.8
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
<A extends Annotation> | getAnnotation(Class<A> annotationType) | Возвращает комментарий данной конструкции указанного типа, если такой комментарий присутствует, иначе |
List<? extends AnnotationMirror> | getAnnotationMirrors() | Возвращает комментарии, которые непосредственно присутствуют на этой конструкции. |
<A extends Annotation> | getAnnotationsByType(Class<A> annotationType) | Возвращает комментарии, которые ассоциированы с данной конструкцией. |
Методы
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 - См. также:
-
getAnnotationMirrors(),AnnotatedElement.getAnnotation(java.lang.Class<T>),EnumConstantNotPresentException,AnnotationTypeMismatchException,IncompleteAnnotationException,MirroredTypeException,MirroredTypesException
getAnnotationsByType
<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType)
Возвращает комментарии, которые ассоциированы с данной конструкцией. Если комментариев, ассоциированных с этой конструкцией, нет, возвращаемое значение — массив длины 0. Порядок комментариев, непосредственно или косвенно присутствующих на конструкции C, вычисляется так, как если бы косвенно присутствующие комментарии на C непосредственно присутствовали на C вместо своего контейнера, в порядке их появления в элементе значения контейнера комментария. Разница между этим методом и getAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяющимся типом комментария, и если да, то пытается найти один или несколько комментариев этого типа, «просматривая» комментарий-контейнер.
Возвращаемые этим методом комментарии могут содержать элемент, значение которого имеет тип Class. Это значение нельзя вернуть непосредственно: информация, необходимая для поиска и загрузки класса (например, используемый загрузчик классов), недоступна, и класс может вообще не загружаться. Попытка прочитать объект Class, вызвав соответствующий метод на возвращаемом комментарии, приведет к MirroredTypeException, из которого можно извлечь соответствующий TypeMirror. Аналогично, попытка прочитать элемент со значением Class[] приведет к MirroredTypesException.
Примечание: Этот метод отличается от других в этом и родственных интерфейсах. Он работает с информацией о времени выполнения — представлениями типов комментариев, в настоящее время загруженных в виртуальную машину — а не с представлениями, определенными и используемыми во всех этих интерфейсах. Вследствие этого вызов методов на возвращаемом объекте комментария может вызвать многие исключения, которые могут быть вызваны при вызове методов на объекте комментария, возвращаемом базовым отражением. Этот метод предназначен для вызывающих сторон, написанных для работы с известным, фиксированным набором типов комментариев.
- Параметры типа:
-
A- тип комментария - Параметры:
-
annotationType- объектClass, соответствующий типу комментария - Возвращает:
- комментарии данной конструкции для указанного типа комментария, если они присутствуют в этой конструкции, иначе пустой массив
- См. также:
-
getAnnotationMirrors(),getAnnotation(Class),AnnotatedElement.getAnnotationsByType(Class),EnumConstantNotPresentException,AnnotationTypeMismatchException,IncompleteAnnotationException,MirroredTypeException,MirroredTypesException
© 1993, 2020, 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/11/docs/api/java.compiler/javax/lang/model/AnnotatedConstruct.html