Spec-Zone.ru › OpenJDK 24

Интерфейс 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.
Возвращает:
kind этого типа

equals

boolean equals(Object obj)
Следует общему соглашению Object.equals. Однако этот метод не указывает, представляют ли два типа один и тот же тип. Для семантического сравнения равенства типов следует использовать Types.isSameType(TypeMirror, TypeMirror). Результаты t1.equals(t2) и Types.isSameType(t1, t2) могут отличаться.
Overrides:
equals в классе Object
Параметры:
obj - объект для сравнения с этим типом
Возвращает:
true, если указанный объект равен этому
См. также:
  • Object.hashCode()
  • HashMap

hashCode

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

toString

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

getAnnotationMirrors

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

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

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

getAnnotation

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

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

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

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

Specified by:
getAnnotation в интерфейсе AnnotatedConstruct
Type Parameters:
A - интерфейс аннотации
Параметры:
annotationType - объект Class, соответствующий интерфейсу аннотации
Возвращает:
аннотацию этого конструкта указанного типа, если такая аннотация присутствует, иначе null
Since:
1.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 in interface AnnotatedConstruct
Type Parameters:
A - интерфейс аннотаций
Parameters:
annotationType - объект Class, соответствующий интерфейсу аннотаций
Returns:
аннотации данного конструкта для указанного типа аннотации, если они присутствуют в этом конструкте, в противном случае — пустой массив
Since:
1.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, 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.compiler/javax/lang/model/type/TypeMirror.html

Spec-Zone.ru

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