Spec-Zone.ru › OpenJDK 21

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

public interface Types
Утилитарные методы для работы с типами.

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

С тех пор:
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)
Проверяет, является ли один тип подтипом другого.
PrimitiveType unboxedType(TypeMirror t)
Возвращает тип (примитивный тип) распакованных значений заданного типа.

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

asElement

Element asElement(TypeMirror t)
Возвращает элемент, соответствующий типу. Тип может быть одним из:
  • тип DeclaredType
  • тип TypeVariable
  • псевдотип для пакета или модуля
Метод возвращает null если тип не имеет соответствующего элемента. Типы без соответствующих элементов включают:
  • примитивные типы
  • выполняемые типы
  • псевдотипы «none»
  • нулевые типы
  • 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 не является видом примитивного типа

getNullType

NullType getNullType()
Возвращает нулевой тип. Это тип null.
Возвращает:
нулевой тип

getNoType

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

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

Параметры:
kind - вид возвращаемого типа
Возвращает:
псевдотип вида VOID или NONE
Исключения:
IllegalArgumentException - если kind недействителен

Тип массива

ArrayType getArrayType(TypeMirror componentType)
Возвращает тип массива со заданным типом компонента.
Параметры:
componentType - тип компонента
Возвращает:
тип массива со заданным типом компонента
Исключения:
IllegalArgumentException - если тип компонента не подходит для массива

Тип подстановки

WildcardType getWildcardType(TypeMirror extendsBound, TypeMirror superBound)
Возвращает новый тип подстановки. Любое из ограничений подстановки может быть задано, или ни одно, но не оба.
Параметры:
extendsBound - ограничение "расширения" (верхнее ограничение), или null если не задано
superBound - ограничение "супер" (нижнее ограничение), или null если не задано
Возвращает:
новый тип подстановки
Исключения:
IllegalArgumentException - если ограничения некорректны

Тип объявления

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

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

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

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

Тип объявления

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 - если задано слишком много или слишком мало аргументов типа, или если предоставлен неподходящий аргумент типа, элемент типа или содержащий тип

Как член

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

© 1993, 2023, 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/21/docs/api/java.compiler/javax/lang/model/util/Types.html

Spec-Zone.ru

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