Интерфейс TypeMirror
- Все суперинтерфейсы:
AnnotatedConstruct
- Все известные подинтерфейсы:
-
ArrayType,DeclaredType,ErrorType,ExecutableType,IntersectionType,NoType,NullType,PrimitiveType,ReferenceType,TypeVariable,UnionType,WildcardType
public interface TypeMirror extends AnnotatedConstruct
void. Для сравнения типов следует использовать служебные методы в Types. Нет гарантии, что любой конкретный тип всегда будет представлен одним и тем же объектом.
Для реализации операций, основанных на классе объекта
TypeMirror, используйте либо посетителя visitor, либо результат метода getKind(). Использование
instanceof не обязательно является надёжным способом определения эффективного класса объекта в этой модели иерархии, так как реализация может выбрать один объект для реализации нескольких подинтерфейсов TypeMirror.
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<R, |
accept |
Применяет посетителя к этому типу. |
boolean |
equals |
Выполняет общий договор Object.equals. |
<A extends Annotation> |
getAnnotation |
Возвращает аннотацию этого конструктора указанного типа, если она присутствует, в противном случае null. |
List<? extends AnnotationMirror> |
getAnnotationMirrors() |
Возвращает аннотации, непосредственно присутствующие на этом конструкторе. |
<A extends Annotation> |
getAnnotationsByType |
Возвращает аннотации, связанные с этим конструктором. |
TypeKind |
getKind() |
Возвращает kind этого типа. |
int |
hashCode() |
Выполняет общий договор Object.hashCode. |
String |
toString() |
Возвращает информативное строковое представление этого типа. |
Подробное описание методов
getKind
TypeKind getKind()
kind данного типа. - Вид примитивного типа — один из видов, для которых
TypeKind.isPrimitive()возвращаетtrue. - Вид нулевого типа —
NULL. - Вид массива —
ARRAY. - Вид объявленного типа —
DECLARED. - Вид типа ошибки —
ERROR. - Вид переменной типа —
TYPEVAR. - Вид типа подстановок —
WILDCARD. - Вид исполняемого типа —
EXECUTABLE. - Вид псевдотипа — один из
VOID,PACKAGE,MODULEилиNONE. - Вид типа объединения —
UNION. - Вид типа пересечения —
INTERSECTION.
- Возвращает:
- вид данного типа
equals
boolean equals(Object obj)
Object.equals. Однако этот метод не указывает, представляют ли два типа один и тот же тип. Для семантического сравнения равенства типов следует использовать Types.isSameType(TypeMirror, TypeMirror). Результаты t1.equals(t2) и Types.isSameType(t1, t2) могут отличаться.- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект для сравнения с этим типом - Возвращает:
-
trueесли указанный объект равен этому - См. также:
hashCode
int hashCode()
Object.hashCode.- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэша для этого объекта.
- См. также:
toString
String toString()
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого типа
getAnnotationMirrors
List<? extends AnnotationMirror> getAnnotationMirrors()
Обратите внимание, что любые аннотации, возвращаемые этим методом, являются аннотациями типа.
- Определяет:
-
getAnnotationMirrorsв интерфейсеAnnotatedConstruct - Возвращает:
- аннотации, непосредственно присутствующие в этом элементе; пустой список, если таковых нет
- С:
- 8
getAnnotation
<A extends Annotation> A getAnnotation(Class<A> annotationType)
null. Аннотация, возвращаемая этим методом, может содержать элемент, значение которого имеет тип Class. Это значение нельзя вернуть напрямую: необходимая для поиска и загрузки класса информация (например, используемый загрузчик классов) недоступна, а класс может быть вообще не загружаем. Попытка чтения объекта Class путём вызова соответствующего метода на возвращенной аннотации приведет к исключению MirroredTypeException, из которого может быть извлечен соответствующий TypeMirror. Аналогично, попытка чтения элемента со значением Class[] приведет к исключению MirroredTypesException.
Примечание: Этот метод отличается от других методов в этом и родственных интерфейсах. Он работает с информацией о времени выполнения — представлениями типов аннотаций, в настоящее время загруженных в JVM, — а не с представлениями, определёнными и используемыми во всех этих интерфейсах. Следовательно, вызов методов на возвращаемом объекте аннотации может вызвать многие из исключений, которые могут быть вызваны при вызове методов на объекте аннотации, возвращаемом ядром отражения. Этот метод предназначен для вызывающих сторон, написанных для работы с известным, фиксированным набором типов аннотаций.
Обратите внимание, что любая аннотация, возвращаемая этим методом, является аннотацией типа.
- Определяет:
-
getAnnotationв интерфейсеAnnotatedConstruct - Параметры типа:
-
A- тип аннотации - Параметры:
-
annotationType- объектClassсоответствующий типу аннотации - Возвращает:
- аннотацию этого элемента заданного типа, если такая аннотация есть, иначе
null - С:
- 8
- См. также:
getAnnotationsByType
<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType)
AnnotatedConstruct.getAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяемым типом аннотации, и если да, то пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию. Аннотации, возвращаемые этим методом, могут содержать элемент, значение которого имеет тип Class. Это значение нельзя вернуть напрямую: информация, необходимая для поиска и загрузки класса (например, загрузчик классов для использования), недоступна, а класс может вообще не загружаться. Попытка прочитать объект Class, вызвав соответствующий метод на возвращаемой аннотации, приведет к MirroredTypeException, из которого можно извлечь соответствующую TypeMirror. Аналогично, попытка прочитать элемент со значением Class[] приведет к MirroredTypesException.
Примечание: Этот метод отличается от других методов в этом и связанных интерфейсах. Он работает с информацией о времени выполнения — представлениями типов аннотаций, в настоящее время загруженных в виртуальную машину, — а не с представлениями, определенными и используемыми в этих интерфейсах. Следовательно, вызов методов на объекте возвращаемой аннотации может вызвать множество исключений, которые могут быть вызваны при вызове методов на объекте аннотации, возвращенном базовым отражением. Этот метод предназначен для вызывающих сторон, написанных для работы с известным, фиксированным набором типов аннотаций.
Обратите внимание, что все аннотации, возвращаемые этим методом, являются аннотациями типа.
- Specified by:
-
getAnnotationsByTypeв интерфейсеAnnotatedConstruct - Type Parameters:
-
A- тип аннотации - Parameters:
-
annotationType- объектClass, соответствующий типу аннотации - Returns:
- аннотации этого конструкта для указанного типа аннотации, если они присутствуют в этом конструкте, иначе пустой массив
- Since:
- 8
- See Also:
accept
<R, P> R accept(TypeVisitor<R,P> v, P p)
- Type Parameters:
-
R- тип возвращаемого значения методами посетителя -
P- тип дополнительного параметра к методам посетителя - Parameters:
-
v- посетитель, работающий с этим типом -
p- дополнительный параметр для посетителя - Returns:
- результат, указанный посетителем
© 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/type/TypeMirror.html