Типы интерфейсов
public interface Types
void». Исполняемые типы и псевдотипы для пакетов и модулей, как правило, не входят в область применения этих методов. Один или несколько аргументов, не входящих в область применения, обычно приводят к тому, что метод выбрасывает исключение IllegalArgumentException. Если метод возвращает зеркало типа или коллекцию зеркал типов, все зеркала типов представляют типы без аннотаций типов, если не указано иное.
Примечание о совместимости: В будущих выпусках платформы в этот интерфейс могут быть добавлены методы.
- Примечание API:
- В эталонной реализации обработка типов ошибок, как правило, не приводит к возникновению
IllegalArgumentExceptionв методах этого интерфейса. - С версии:
- 1.6
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Element |
asElement |
Возвращает элемент, соответствующий типу. |
TypeMirror |
asMemberOf |
Возвращает тип элемента, когда этот элемент рассматривается как член заданного типа или иным образом непосредственно содержится в нём. |
TypeElement |
boxedClass |
Возвращает класс упакованного значения аргумента-примитивного типа. |
TypeMirror |
capture |
Применяет преобразование захвата к типу. |
boolean |
contains |
Проверяет, содержит ли один аргумент типа другой. |
List |
directSupertypes |
Возвращает непосредственные супертипы типа. |
TypeMirror |
erasure |
Возвращает стирание типа. |
ArrayType |
getArrayType |
Возвращает тип массива с указанным типом компонента. |
DeclaredType |
getDeclaredType |
Возвращает тип, соответствующий элементу типа и фактическим аргументам типа. |
DeclaredType |
getDeclaredType |
Возвращает тип, соответствующий элементу типа и фактическим аргументам типа, с учётом содержащего типа, членом которого он является. |
NoType |
getNoType |
Возвращает псевдотип, используемый там, где фактический тип неприменим. |
NullType |
getNullType() |
Возвращает тип null. |
PrimitiveType |
getPrimitiveType |
Возвращает примитивный тип. |
WildcardType |
getWildcardType |
Возвращает новый подстановочный тип. |
boolean |
isAssignable |
Проверяет, можно ли присвоить значение одного типа переменной другого типа. |
boolean |
isSameType |
Проверяет, представляют ли два объекта TypeMirror один и тот же тип. |
boolean |
isSubsignature |
Проверяет, является ли сигнатура одного метода подсигнатурой другого. |
boolean |
isSubtype |
Проверяет, является ли один тип подтипом другого. |
default <T extends TypeMirror> |
stripAnnotations |
Возвращает зеркало типа, эквивалентное аргументу, но без аннотаций. |
PrimitiveType |
unboxedType |
Возвращает тип (примитивный тип) распакованных значений заданного типа. |
Подробное описание методов
asElement
Element asElement(TypeMirror t)
DeclaredTypeTypeVariable- псевдотип для пакета или модуля
null, если тип не имеет соответствующего элемента. К типам, не имеющим соответствующих элементов, относятся:
- Параметры:
-
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
- См. Спецификацию языка 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
© 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