Типы интерфейсов
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() |
Возвращает нулевой тип. |
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)
-
DeclaredType -
TypeVariable - псевдотип для пакета или модуля
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- граница расширения (верхняя), или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