Spec-Zone.ru › OpenJDK 27

Интерфейс TypeMirror

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

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

Чтобы выполнять операции на основе класса объекта TypeMirror, используйте либо посетитель, либо результат метода 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 — это NULL.
  • Вид типа массива — это ARRAY.
  • Вид объявленного типа — это DECLARED.
  • Вид типа ошибки — это ERROR.
  • Вид переменной типа — это TYPEVAR.
  • Вид типа с подстановочным знаком — это WILDCARD.
  • Вид исполняемого типа — это EXECUTABLE.
  • Вид псевдотипа — один из следующих: VOID, PACKAGE, MODULE или NONE.
  • Вид объединенного типа — это UNION.
  • Вид типа-пересечения — это INTERSECTION.
Возвращает:
kind этого типа

equals

boolean equals(Object obj)
Соответствует общему контракту Object.equals. Однако этот метод не указывает, представляют ли два типа один и тот же тип. Для семантического сравнения типов следует использовать Types.isSameType(TypeMirror, TypeMirror). Результаты t1.equals(t2) и Types.isSameType(t1, t2) могут различаться.
Переопределяет:
equals в классе Object
Примечание API:
Идентичность объекта TypeMirror зависит от неявного состояния, недоступного напрямую через его методы, включая сведения о наличии несвязанных типов. Не следует ожидать, что объекты TypeMirror, созданные разными реализациями этих интерфейсов, будут считаться равными, даже если моделируется «один и тот же» тип; это аналогично неравенству объектов Class для одного и того же файла класса, загруженного разными загрузчиками классов.
Параметры:
obj — объект для сравнения с этим типом
Возвращает:
true, если указанный объект равен этому объекту
См. также:
  • Object.hashCode()
  • HashMap

hashCode

int hashCode()
Соответствует общему контракту Object.hashCode.
Переопределяет:
hashCode в классе Object
Возвращает:
значение хеш-кода этого объекта
См. также:
  • equals(Object)

toString

String toString()
Возвращает информативное строковое представление этого типа. Если возможно, строка должна иметь форму, подходящую для представления этого типа в исходном коде. Все имена, включенные в результат, по возможности указываются полностью.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого типа

getAnnotationMirrors

List<? extends AnnotationMirror> getAnnotationMirrors()
Возвращает аннотации, непосредственно присутствующие в этом конструкте.

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

Указано в:
getAnnotationMirrors в интерфейсе AnnotatedConstruct
Возвращает:
аннотации, непосредственно присутствующие в этом конструкте; пустой список, если таких нет
Начиная с:
1.8

getAnnotation

<A extends Annotation> A getAnnotation(Class<A> annotationType)
Возвращает аннотацию этого конструкта заданного типа, если такая аннотация присутствует, иначе null.

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

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

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

Указано в:
getAnnotation в интерфейсе AnnotatedConstruct
Параметры типа:
A — интерфейс аннотации
Параметры:
annotationType — объект Class, соответствующий интерфейсу аннотации
Возвращает:
аннотацию этого конструкта заданного типа, если такая аннотация присутствует, иначе null
Начиная с:
1.8
См. также:
  • AnnotatedConstruct.getAnnotationMirrors()
  • AnnotatedElement.getAnnotation(Class)
  • EnumConstantNotPresentException
  • AnnotationTypeMismatchException
  • IncompleteAnnotationException
  • MirroredTypeException
  • MirroredTypesException

getAnnotationsByType

<A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType)
Возвращает аннотации заданного типа, связанные с этим конструктом. Если с этим конструктом не связано ни одной аннотации заданного типа, возвращаемое значение представляет собой массив длины 0. Порядок аннотаций, непосредственно или опосредованно присутствующих в конструкте C, вычисляется так, как если бы опосредованно присутствующие аннотации в C были непосредственно присутствующими в C вместо контейнерной аннотации и располагались в том порядке, в котором они указаны в элементе value контейнерной аннотации. Этот метод отличается от AnnotatedConstruct.getAnnotation(Class) тем, что он проверяет, является ли его аргумент повторяемым интерфейсом аннотации, и, если это так, пытается найти одну или несколько аннотаций этого типа, «заглядывая» в контейнерную аннотацию.

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

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

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

Указано в:
getAnnotationsByType в интерфейсе AnnotatedConstruct
Параметры типа:
A — интерфейс аннотации
Параметры:
annotationType — объект Class, соответствующий интерфейсу аннотации
Возвращает:
аннотации этого конструкта заданного типа, если они присутствуют в этом конструкте, иначе пустой массив
Начиная с:
1.8
См. также:
  • AnnotatedConstruct.getAnnotationMirrors()
  • AnnotatedConstruct.getAnnotation(Class)
  • AnnotatedElement.getAnnotationsByType(Class)
  • EnumConstantNotPresentException
  • AnnotationTypeMismatchException
  • IncompleteAnnotationException
  • MirroredTypeException
  • MirroredTypesException

accept

<R,P> R accept(TypeVisitor<R,P> v, P p)
Применяет посетитель к этому типу.
Параметры типа:
R — тип возвращаемого значения методов посетителя
P — тип дополнительного параметра методов посетителя
Параметры:
v — посетитель, обрабатывающий этот тип
p — дополнительный параметр посетителя
Возвращает:
результат, определяемый посетителем

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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