Spec-Zone.ru › OpenJDK 17

Интерфейс TypeMirror

Все суперинтерфейсы:
AnnotatedConstruct
Все известные подинтерфейсы:
ArrayType, DeclaredType, ErrorType, ExecutableType, IntersectionType, NoType, NullType, PrimitiveType, ReferenceType, TypeVariable, UnionType, WildcardType
public interface TypeMirror extends AnnotatedConstruct
Представляет тип в языке программирования Java. Типы включают примитивные типы, объявленные типы (классы и интерфейсы), массивы, переменные типа, и тип null. Также представлены аргументы типа с подстановками, сигнатуры и возвращаемые типы исполняемых файлов, и псевдотипы, соответствующие пакетам, модулям и ключевому слову void.

Для сравнения типов следует использовать служебные методы в Types. Нет гарантии, что любой конкретный тип всегда будет представлен одним и тем же объектом.

Для реализации операций, основанных на классе объекта TypeMirror, используйте либо посетителя visitor, либо результат метода getKind(). Использование instanceof не обязательно является надёжным способом определения эффективного класса объекта в этой модели иерархии, так как реализация может выбрать один объект для реализации нескольких подинтерфейсов TypeMirror.

См. Спецификацию языка Java:
4.1 Виды типов и значений
4.2 Примитивные типы и значения
4.3 Ссылочные типы и значения
4.4 Переменные типа
4.5 Параметризованные типы
4.8 Необработанные типы
4.9 Пересекающиеся типы
10.1 Типы массивов
С момента:
1.6
См. также:
  • Element
  • Types

Краткое описание методов

Модификатор и тип Метод Описание
<R, P> R accept(TypeVisitor<R,P> v, P p)
Применяет посетителя к этому типу.
boolean equals(Object obj)
Выполняет общий договор Object.equals.
<A extends Annotation>
A
getAnnotation(Class<A> annotationType)
Возвращает аннотацию этого конструктора указанного типа, если она присутствует, в противном случае null.
List<? extends AnnotationMirror> getAnnotationMirrors()
Возвращает аннотации, непосредственно присутствующие на этом конструкторе.
<A extends Annotation>
A[]
getAnnotationsByType(Class<A> annotationType)
Возвращает аннотации, связанные с этим конструктором.
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 если указанный объект равен этому
См. также:
  • Object.hashCode()
  • HashMap

hashCode

int hashCode()
Следует общему соглашению Object.hashCode.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хэша для этого объекта.
См. также:
  • equals(java.lang.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
См. также:
  • AnnotatedConstruct.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 вместо их контейнерной аннотации, в порядке их появления в элементе значения контейнерной аннотации. Разница между этим методом и AnnotatedConstruct.getAnnotation(Class) заключается в том, что этот метод определяет, является ли его аргумент повторяемым типом аннотации, и если да, то пытается найти одну или несколько аннотаций этого типа, «просматривая» контейнерную аннотацию.

Аннотации, возвращаемые этим методом, могут содержать элемент, значение которого имеет тип Class. Это значение нельзя вернуть напрямую: информация, необходимая для поиска и загрузки класса (например, загрузчик классов для использования), недоступна, а класс может вообще не загружаться. Попытка прочитать объект Class, вызвав соответствующий метод на возвращаемой аннотации, приведет к MirroredTypeException, из которого можно извлечь соответствующую TypeMirror. Аналогично, попытка прочитать элемент со значением Class[] приведет к MirroredTypesException.

Примечание: Этот метод отличается от других методов в этом и связанных интерфейсах. Он работает с информацией о времени выполнения — представлениями типов аннотаций, в настоящее время загруженных в виртуальную машину, — а не с представлениями, определенными и используемыми в этих интерфейсах. Следовательно, вызов методов на объекте возвращаемой аннотации может вызвать множество исключений, которые могут быть вызваны при вызове методов на объекте аннотации, возвращенном базовым отражением. Этот метод предназначен для вызывающих сторон, написанных для работы с известным, фиксированным набором типов аннотаций.

Обратите внимание, что все аннотации, возвращаемые этим методом, являются аннотациями типа.

Specified by:
getAnnotationsByType в интерфейсе AnnotatedConstruct
Type Parameters:
A - тип аннотации
Parameters:
annotationType - объект Class, соответствующий типу аннотации
Returns:
аннотации этого конструкта для указанного типа аннотации, если они присутствуют в этом конструкте, иначе пустой массив
Since:
8
See Also:
  • AnnotatedConstruct.getAnnotationMirrors()
  • AnnotatedConstruct.getAnnotation(Class)
  • AnnotatedElement.getAnnotationsByType(Class)
  • EnumConstantNotPresentException
  • AnnotationTypeMismatchException
  • IncompleteAnnotationException
  • MirroredTypeException
  • MirroredTypesException

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API