Интерфейсы типов
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) | Проверяет, представляют ли два |
boolean | isSubsignature(ExecutableType m1,
ExecutableType m2) | Проверяет, является ли сигнатура одного метода подсигнатурой другого. |
boolean | isSubtype(TypeMirror t1,
TypeMirror t2) | Проверяет, является ли один тип подтипом другого. |
PrimitiveType | unboxedType(TypeMirror t) | Возвращает тип (примитивный тип) распакованных значений заданного типа. |
Методы
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- если задан тип для исполняемого файла, пакета или модуля
isAssignable
boolean isAssignable(TypeMirror t1,
TypeMirror t2) Проверяет, может ли один тип быть приведён к другому.
- Параметры:
-
t1- первый тип -
t2- второй тип - Возвращает:
-
trueтогда и только тогда, когда первый тип может быть приведён ко второму - Выбрасывает:
-
IllegalArgumentException- если задан тип для исполняемого файла, пакета или модуля
contains
boolean contains(TypeMirror t1,
TypeMirror t2) Проверяет, содержит ли один тип аргумент другой.
- Параметры:
-
t1- первый тип -
t2- второй тип - Возвращает:
-
trueтогда и только тогда, когда первый тип содержит второй - Выбрасывает:
-
IllegalArgumentException- если задан тип для исполняемого файла, пакета или модуля
isSubsignature
boolean isSubsignature(ExecutableType m1,
ExecutableType m2) Проверяет, является ли сигнатура одного метода подсигнатурой другого.
- Параметры:
-
m1- первый метод -
m2- второй метод - Возвращает:
-
trueтогда и только тогда, когда первая сигнатура является подсигнатурой второй
directSupertypes
List<? extends TypeMirror> directSupertypes(TypeMirror t)
Возвращает прямые супертипы типа. Типы интерфейсов, если таковые имеются, будут появляться в списке последними. Для типа интерфейса без прямых супер-интерфейсов возвращается тип-зеркало, представляющее java.lang.Object.
- Параметры:
-
t- проверяемый тип - Возвращает:
- прямые супертипы, или пустой список, если таковых нет
- Выбрасывает:
-
IllegalArgumentException- если задан тип для исполняемого файла, пакета или модуля
erasure
TypeMirror erasure(TypeMirror t)
Возвращает стирание типа.
- Параметры:
-
t- тип, который нужно стереть - Возвращает:
- стирание данного типа
- Выбрасывает:
-
IllegalArgumentException- если задан тип для пакета или модуля
boxedClass
TypeElement boxedClass(PrimitiveType p)
Возвращает класс упакованного значения заданного примитивного типа. То есть, применяется упаковка преобразования.
- Параметры:
-
p- примитивный тип, который нужно преобразовать - Возвращает:
- класс упакованного значения типа
p
unboxedType
PrimitiveType unboxedType(TypeMirror t)
Возвращает тип (примитивный тип) распакованных значений заданного типа. То есть, применяется распаковка преобразования.
- Параметры:
-
t- тип, который нужно распаковать - Возвращает:
- тип распакованного значения типа
t - Выбрасывает:
-
IllegalArgumentException- если у данного типа нет преобразования распаковки
capture
TypeMirror capture(TypeMirror t)
Применяет преобразование захвата к типу.
- Параметры:
-
t- тип, который нужно преобразовать - Возвращает:
- результат применения преобразования захвата
- Выбрасывает:
-
IllegalArgumentException- если задан тип для исполняемого файла, пакета или модуля
getPrimitiveType
PrimitiveType getPrimitiveType(TypeKind kind)
Возвращает примитивный тип.
- Параметры:
-
kind- вид примитивного типа, который нужно вернуть - Возвращает:
- примитивный тип
- Выбрасывает:
-
IllegalArgumentException- еслиkindне является примитивным видом
getNullType
NullType getNullType()
Возвращает тип null. Это тип null.
- Возвращает:
- тип null
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- если тип компонента недействителен для массива
getWildcardType
WildcardType getWildcardType(TypeMirror extendsBound,
TypeMirror superBound) Возвращает новый тип аргумента шаблона. Любой из границ шаблона может быть указан, или ни один, но не оба.
- Параметры:
-
extendsBound- расширение (верхняя) граница, илиnullесли нет -
superBound- подтип (нижняя) граница, илиnullесли нет - Возвращает:
- новый шаблон
- Выбрасывает:
-
IllegalArgumentException- если границы недействительны
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- если элемент не является допустимым для данного типа
© 1993, 2020, 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/11/docs/api/java.compiler/javax/lang/model/util/Types.html