Spec-Zone.ru › OpenJDK 25

Типы интерфейсов

public interface Types
Вспомогательные методы для работы с типами. Большинство методов работают с примитивными типами, ссылочными типами (включая типы массивов и тип null), пересечениями типов и псевдотипом «void». Исполняемые типы и псевдотипы для пакетов и модулей, как правило, не входят в область применения этих методов. Один или несколько аргументов, не входящих в область применения, обычно приводят к тому, что метод выбрасывает исключение IllegalArgumentException.

Если метод возвращает зеркало типа или коллекцию зеркал типов, все зеркала типов представляют типы без аннотаций типов, если не указано иное.

Примечание о совместимости: В будущих выпусках платформы в этот интерфейс могут быть добавлены методы.

Примечание API:
В эталонной реализации обработка типов ошибок, как правило, не приводит к возникновению IllegalArgumentException в методах этого интерфейса.
С версии:
1.6
См. также:
  • ProcessingEnvironment.getTypeUtils()

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

Модификатор и тип Метод Описание
Element asElement(TypeMirror t)
Возвращает элемент, соответствующий типу.
TypeMirror asMemberOf(DeclaredType containing, Element element)
Возвращает тип элемента, когда этот элемент рассматривается как член заданного типа или иным образом непосредственно содержится в нём.
TypeElement boxedClass(PrimitiveType p)
Возвращает класс упакованного значения аргумента-примитивного типа.
TypeMirror capture(TypeMirror t)
Применяет преобразование захвата к типу.
boolean contains(TypeMirror t1, TypeMirror t2)
Проверяет, содержит ли один аргумент типа другой.
List<? extends TypeMirror> directSupertypes(TypeMirror t)
Возвращает непосредственные супертипы типа.
TypeMirror erasure(TypeMirror t)
Возвращает стирание типа.
ArrayType getArrayType(TypeMirror componentType)
Возвращает тип массива с указанным типом компонента.
DeclaredType getDeclaredType(TypeElement typeElem, TypeMirror... typeArgs)
Возвращает тип, соответствующий элементу типа и фактическим аргументам типа.
DeclaredType getDeclaredType(DeclaredType containing, TypeElement typeElem, TypeMirror... typeArgs)
Возвращает тип, соответствующий элементу типа и фактическим аргументам типа, с учётом содержащего типа, членом которого он является.
NoType getNoType(TypeKind kind)
Возвращает псевдотип, используемый там, где фактический тип неприменим.
NullType getNullType()
Возвращает тип null.
PrimitiveType getPrimitiveType(TypeKind kind)
Возвращает примитивный тип.
WildcardType getWildcardType(TypeMirror extendsBound, TypeMirror superBound)
Возвращает новый подстановочный тип.
boolean isAssignable(TypeMirror t1, TypeMirror t2)
Проверяет, можно ли присвоить значение одного типа переменной другого типа.
boolean isSameType(TypeMirror t1, TypeMirror t2)
Проверяет, представляют ли два объекта TypeMirror один и тот же тип.
boolean isSubsignature(ExecutableType m1, ExecutableType m2)
Проверяет, является ли сигнатура одного метода подсигнатурой другого.
boolean isSubtype(TypeMirror t1, TypeMirror t2)
Проверяет, является ли один тип подтипом другого.
default <T extends TypeMirror>
T
stripAnnotations(T t)
Возвращает зеркало типа, эквивалентное аргументу, но без аннотаций.
PrimitiveType unboxedType(TypeMirror t)
Возвращает тип (примитивный тип) распакованных значений заданного типа.

Подробное описание методов

asElement

Element asElement(TypeMirror t)
Возвращает элемент, соответствующий типу. Тип может быть одним из следующих:
  • DeclaredType
  • TypeVariable
  • псевдотип для пакета или модуля
Метод возвращает null, если тип не имеет соответствующего элемента. К типам, не имеющим соответствующих элементов, относятся:
  • примитивные типы
  • исполняемые типы
  • псевдотипы «none»
  • типы null
  • void
  • аргумент типа-подстановки
Параметры:
t — тип, преобразуемый в элемент
Возвращает:
элемент, соответствующий заданному типу

isSameType

boolean isSameType(TypeMirror t1, TypeMirror t2)
Проверяет, представляют ли два объекта TypeMirror один и тот же тип.

Предупреждение: если любой из аргументов этого метода представляет собой подстановочный тип, метод вернёт false. Следовательно, подстановочный тип не совпадает даже сам с собой. Поначалу это может показаться странным, но становится понятным, если учесть, что компилятор должен отклонить такой пример:

  List<?> list = new ArrayList<Object>();
  list.add(list.get(0));

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

Параметры:
t1 — первый тип
t2 — второй тип
Возвращает:
true тогда и только тогда, когда два типа совпадают

isSubtype

boolean isSubtype(TypeMirror t1, TypeMirror t2)
Проверяет, является ли один тип подтипом другого. Любой тип считается подтипом самого себя.
Параметры:
t1 — первый тип
t2 — второй тип
Возвращает:
true тогда и только тогда, когда первый тип является подтипом второго
Выбрасывает:
IllegalArgumentException — если задан тип исполняемого элемента, пакета или модуля
См. Спецификацию языка Java:
4.10 Подтипизация

isAssignable

boolean isAssignable(TypeMirror t1, TypeMirror t2)
Проверяет, можно ли присвоить значение одного типа переменной другого типа.
Параметры:
t1 — первый тип
t2 — второй тип
Возвращает:
true тогда и только тогда, когда значение первого типа можно присвоить переменной второго типа
Выбрасывает:
IllegalArgumentException — если задан тип исполняемого элемента, пакета или модуля
См. Спецификацию языка Java:
5.2 Контексты присваивания

contains

boolean contains(TypeMirror t1, TypeMirror t2)
Проверяет, содержит ли один аргумент типа другой.
Параметры:
t1 — первый тип
t2 — второй тип
Возвращает:
true тогда и только тогда, когда первый тип содержит второй
Выбрасывает:
IllegalArgumentException — если задан тип исполняемого элемента, пакета или модуля
См. Спецификацию языка Java:
4.5.1 Аргументы типов параметризованных типов

isSubsignature

boolean isSubsignature(ExecutableType m1, ExecutableType m2)
Проверяет, является ли сигнатура одного метода подсигнатурой другого.
Параметры:
m1 — первый метод
m2 — второй метод
Возвращает:
true тогда и только тогда, когда первая сигнатура является подсигнатурой второй
См. Спецификацию языка Java:
8.4.2 Сигнатура метода

directSupertypes

List<? extends TypeMirror> directSupertypes(TypeMirror t)
Возвращает непосредственные супертипы типа. Если имеются типы интерфейсов, они будут перечислены в конце списка. Для типа интерфейса без непосредственных суперинтерфейсов возвращается зеркало типа, представляющее java.lang.Object. У типа java.lang.Object нет непосредственного суперкласса (JLS 8.1.4, 8.1.5), поэтому для непосредственных суперклассов зеркала типа, представляющего java.lang.Object, возвращается пустой список. Аннотации непосредственных супертипов сохраняются.
Параметры:
t — исследуемый тип
Возвращает:
непосредственные супертипы или пустой список, если их нет
Выбрасывает:
IllegalArgumentException — если задан тип исполняемого элемента, пакета или модуля
См. Спецификацию языка Java:
4.10 Подтипизация

erasure

TypeMirror erasure(TypeMirror t)
Возвращает стирание типа.
Параметры:
t — тип, для которого выполняется стирание
Возвращает:
стирание типа
Выбрасывает:
IllegalArgumentException — если задан тип пакета или модуля
См. Спецификацию языка Java:
4.6 Стирание типов

boxedClass

TypeElement boxedClass(PrimitiveType p)
Возвращает класс упакованного значения аргумента-примитивного типа. Иными словами, применяется преобразование упаковки.
Параметры:
p — примитивный тип для преобразования
Возвращает:
класс упакованного значения аргумента-примитивного типа
См. Спецификацию языка Java:
5.1.7 Преобразование упаковки

unboxedType

PrimitiveType unboxedType(TypeMirror t)
Возвращает тип (примитивный тип) распакованных значений заданного типа. Иными словами, применяется преобразование распаковки.
Параметры:
t — тип для распаковки
Возвращает:
тип распакованного значения типа t
Выбрасывает:
IllegalArgumentException — если для заданного типа не предусмотрено преобразование распаковки. Преобразование распаковки предусмотрено только для типов классов-обёрток.
См. Спецификацию языка Java:
5.1.8 Преобразование распаковки

capture

TypeMirror capture(TypeMirror t)
Применяет преобразование захвата к типу.
Параметры:
t — тип для преобразования
Возвращает:
результат применения преобразования захвата
Выбрасывает:
IllegalArgumentException — если задан тип исполняемого элемента, пакета или модуля
См. Спецификацию языка Java:
5.1.10 Преобразование захвата

getPrimitiveType

PrimitiveType getPrimitiveType(TypeKind kind)
Возвращает примитивный тип.
Параметры:
kind — вид возвращаемого примитивного типа
Возвращает:
примитивный тип
Выбрасывает:
IllegalArgumentException — если kind не является видом примитивного типа
См. Спецификацию языка Java:
4.2 Примитивные типы и значения

getNullType

NullType getNullType()
Возвращает тип null. Это тип значения null.
Возвращает:
тип null
См. Спецификацию языка Java:
4.1 Виды типов и значений

getNoType

NoType getNoType(TypeKind kind)
Возвращает псевдотип, используемый там, где фактический тип неприменим. Возвращаемый вид типа может быть VOID или NONE.

Чтобы получить псевдотип, соответствующий пакету или модулю, вызовите asType() для элемента, моделирующего пакет или модуль. Имена можно преобразовать в элементы пакетов или модулей с помощью Elements.getPackageElement(CharSequence) или Elements.getModuleElement(CharSequence) соответственно.

Параметры:
kind — вид возвращаемого типа
Возвращает:
псевдотип вида VOID или NONE
Выбрасывает:
IllegalArgumentException — если kind недопустим

getArrayType

ArrayType getArrayType(TypeMirror componentType)
Возвращает тип массива с указанным типом компонента. Аннотации типа компонента сохраняются.
Параметры:
componentType — тип компонента
Возвращает:
тип массива с указанным типом компонента
Выбрасывает:
IllegalArgumentException — если тип компонента недопустим для массива. Все допустимые типы являются ссылочными типами или примитивными типами. К недопустимым типам относятся null, исполняемые типы, типы пакетов, модулей и подстановочные типы.
См. Спецификацию языка Java:
10.1 Типы массивов

getWildcardType

WildcardType getWildcardType(TypeMirror extendsBound, TypeMirror superBound)
Возвращает новый подстановочный тип. Можно указать одну из границ подстановочного типа или не указывать ни одной, но нельзя указать обе. Аннотации границ сохраняются.
Параметры:
extendsBound — верхняя граница extends или null, если её нет
superBound — нижняя граница super или null, если её нет
Возвращает:
новый подстановочный тип
Выбрасывает:
IllegalArgumentException — если границы недопустимы. К недопустимым границам относятся все типы, не являющиеся ссылочными типами.
См. Спецификацию языка Java:
4.5.1 Аргументы типов параметризованных типов

getDeclaredType

DeclaredType getDeclaredType(TypeElement typeElem, TypeMirror... typeArgs)
Возвращает тип, соответствующий элементу типа и фактическим аргументам типа. Например, для элемента типа Set и зеркала типа String этот метод можно использовать для получения параметризованного типа Set<String>. Аннотации аргументов типа сохраняются.

Количество аргументов типа должно либо совпадать с количеством формальных параметров типа элемента типа, либо быть равным нулю. Если оно равно нулю и элемент типа является обобщённым, возвращается элемент типа без параметров типа.

Если возвращается параметризованный тип, его элемент типа не должен содержаться в обобщённом внешнем классе. Например, параметризованный тип Outer<String>.Inner<Number> можно создать, сначала вызвав этот метод для получения типа Outer<String>, а затем вызвав getDeclaredType(DeclaredType, TypeElement, TypeMirror...).

Параметры:
typeElem — элемент типа
typeArgs — фактические аргументы типа
Возвращает:
тип, соответствующий элементу типа и фактическим аргументам типа
Выбрасывает:
IllegalArgumentException — если задано слишком много или слишком мало аргументов типа либо указан недопустимый аргумент типа или элемент типа

getDeclaredType

DeclaredType getDeclaredType(DeclaredType containing, TypeElement typeElem, TypeMirror... typeArgs)
Возвращает тип, соответствующий элементу типа и фактическим аргументам типа, с учётом содержащего типа, членом которого он является. Например, параметризованный тип Outer<String>.Inner<Number> можно создать, сначала вызвав getDeclaredType(TypeElement, TypeMirror...) для получения типа Outer<String>, а затем вызвав этот метод. Аннотации аргументов типа сохраняются.

Если содержащий тип является параметризованным, количество аргументов типа должно совпадать с количеством формальных параметров типа у typeElem. Если он не параметризован или является null, этот метод эквивалентен getDeclaredType(typeElem, typeArgs).

Параметры:
containing — содержащий тип или null, если его нет
typeElem — элемент типа
typeArgs — фактические аргументы типа
Возвращает:
тип, соответствующий элементу типа и фактическим аргументам типа и содержащийся в заданном типе
Выбрасывает:
IllegalArgumentException — если задано слишком много или слишком мало аргументов типа либо указан недопустимый аргумент типа, элемент типа или содержащий тип

asMemberOf

TypeMirror asMemberOf(DeclaredType containing, Element element)
Возвращает тип элемента, когда этот элемент рассматривается как член заданного типа или иным образом непосредственно содержится в нём. Например, если рассматривать его как член параметризованного типа Set<String>, метод Set.add является ExecutableType, параметр которого имеет тип String.
Параметры:
containing — содержащий тип
element — элемент
Возвращает:
тип элемента с точки зрения содержащего типа
Выбрасывает:
IllegalArgumentException — если элемент недопустим для заданного типа

stripAnnotations

default <T extends TypeMirror> T stripAnnotations(T t)
Возвращает зеркало типа, эквивалентное аргументу, но без аннотаций. Если зеркало типа представляет составной тип, например тип массива или подстановочный тип, все составляющие типы, например тип компонента массива и типы границ подстановочного типа, также не имеют аннотаций; это правило применяется рекурсивно.

Для большинства видов зеркал типов результат

  types.isSameType(typeMirror, types.stripAnnotations(typeMirror))
— true. Это условие false не выполняется для подстановочных типов по причинам, описанным в другом месте.
Требования к реализации:
Реализация по умолчанию выбрасывает UnsupportedOperationException.
Параметры типа:
T — конкретный тип зеркала типа
Параметры:
t — зеркало типа
Возвращает:
зеркало типа, эквивалентное аргументу, но без аннотаций
С версии:
23

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.compiler/javax/lang/model/util/Types.html

Spec-Zone.ru

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