Spec-Zone.ru › OpenJDK 24

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

public interface Types
Утилитарные методы для работы с типами. Большинство методов работают с примитивными типами, ссылочными типами (включая массивы и нулевой тип), пересечениями типов и псевдотипом '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()
Возвращает нулевой тип.
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 - граница расширения (верхняя), или null, если нет
superBound - граница наследования (нижняя), или 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's формальных параметров типа. Если он не является параметризованным или если он 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

© 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/util/Types.html

Spec-Zone.ru

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