public interface Types
对类型进行操作的实用方法。
兼容性说明:在平台的未来版本中,可能会将方法添加到此接口。
- 自从:
- 1.6
- 参见:
-
方法总结
修饰符和类型方法描述返回与类型对应的元素。asMemberOf
(DeclaredType containing, Element element) 当元素被视为给定类型的成员或直接包含给定类型时,返回该元素的类型。返回基本类型参数的装箱值的类。将捕获转换应用于类型。boolean
contains
(TypeMirror t1, TypeMirror t2) 测试一个类型参数是否contains其他。List<? extends TypeMirror>
返回类型的直接超类型。返回类型的擦除。getArrayType
(TypeMirror componentType) 返回具有指定组件类型的数组类型。getDeclaredType
(TypeElement typeElem, TypeMirror... typeArgs) 返回对应于类型元素和实际类型参数的类型。getDeclaredType
(DeclaredType containing, TypeElement typeElem, TypeMirror... typeArgs) 返回对应于类型元素和实际类型参数的类型,给定它是其成员的包含类型。返回在实际类型不合适的情况下使用的伪类型。返回空类型。getPrimitiveType
(TypeKind kind) 返回原始类型。getWildcardType
(TypeMirror extendsBound, TypeMirror superBound) 返回一个新的通配符类型。boolean
isAssignable
(TypeMirror t1, TypeMirror t2) 测试一种类型是否可分配给另一种类型。boolean
isSameType
(TypeMirror t1, TypeMirror t2) 测试两个TypeMirror
对象是否表示同一类型。boolean
测试一个方法的签名是否是一个子签名另一个。boolean
isSubtype
(TypeMirror t1, TypeMirror t2) 测试一种类型是否是另一种类型的子类型。返回给定类型的未装箱值的类型(基本类型)。
-
方法详情
-
asElement
返回与类型对应的元素。类型可能是DeclaredType
或TypeVariable
。如果类型不是具有相应元素的类型,则返回null
。- 参数:
t
- 映射到元素的类型- 返回:
- 对应于给定类型的元素
-
isSameType
测试两个TypeMirror
对象是否表示同一类型。警告:如果此方法的任一参数表示通配符,则此方法将返回 false。因此,通配符与其本身不是同一类型。起初这可能会令人惊讶,但一旦您考虑到像这样的示例必须被编译器拒绝时,这就很有意义了:
List<?> list = new ArrayList<Object>();
list.add(list.get(0));
由于注释只是与类型关联的元数据,因此在计算两个
TypeMirror
对象是否为同一类型时,not 会考虑任一参数上的注释集。特别是,两个TypeMirror
对象可以有不同的注释,但仍然被认为是相同的。- 参数:
t1
- 第一种类型t2
- 第二种- 返回:
true
当且仅当两种类型相同
-
isSubtype
测试一种类型是否是另一种类型的子类型。任何类型都被认为是其自身的子类型。- 参数:
t1
- 第一种类型t2
- 第二种- 返回:
true
当且仅当第一种类型是第二种类型的子类型- 抛出:
IllegalArgumentException
- 如果给定可执行文件、包或模块的类型- 看Java 语言规范:
-
4.10 子类型化
-
isAssignable
测试一种类型是否可分配给另一种类型。- 参数:
t1
- 第一种类型t2
- 第二种- 返回:
true
当且仅当第一种类型可分配给第二种类型- 抛出:
IllegalArgumentException
- 如果给定可执行文件、包或模块的类型- 看Java 语言规范:
-
5.2 赋值上下文
-
contains
测试一个类型参数是否contains其他。- 参数:
t1
- 第一种类型t2
- 第二种- 返回:
true
当且仅当第一种类型包含第二种- 抛出:
IllegalArgumentException
- 如果给定可执行文件、包或模块的类型- 看Java 语言规范:
-
4.5.1 参数化类型的类型参数
-
isSubsignature
测试一个方法的签名是否是一个子签名另一个。- 参数:
m1
- 第一种方法m2
- 第二种方法- 返回:
true
当且仅当第一个签名是第二个签名的子签名- 看Java 语言规范:
-
8.4.2 方法签名
-
directSupertypes
返回类型的直接超类型。接口类型(如果有)将出现在列表的最后。对于没有直接超接口的接口类型,返回表示java.lang.Object
的类型镜像。类型java.lang.Object
没有直接超类型(JLS 8.1.4 , 8.1.5 ),因此为表示java.lang.Object
的类型镜像的直接超类型返回一个空列表。- 参数:
t
- 正在检查的类型- 返回:
- 直接超类型,如果没有则为空列表
- 抛出:
IllegalArgumentException
- 如果给定可执行文件、包或模块的类型- 看Java 语言规范:
-
4.10 子类型化
-
erasure
返回类型的擦除。- 参数:
t
- 要擦除的类型- 返回:
- 类型的擦除
- 抛出:
IllegalArgumentException
- 如果给定包或模块的类型- 看Java 语言规范:
-
4.6 类型擦除
-
boxedClass
返回基本类型参数的装箱值的类。那是,拳击转换被申请;被应用。- 参数:
p
- 要转换的基本类型- 返回:
- 原始类型参数的装箱值的类
- 看Java 语言规范:
-
5.1.7 装箱转换
-
unboxedType
返回给定类型的未装箱值的类型(基本类型)。那是,拆箱转换被申请;被应用。- 参数:
t
- 要拆箱的类型- 返回:
t
类型的未装箱值的类型- 抛出:
IllegalArgumentException
- 如果给定类型没有拆箱转换- 看Java 语言规范:
-
5.1.8 拆箱转换
-
capture
将捕获转换应用于类型。- 参数:
t
- 要转换的类型- 返回:
- 应用捕获转换的结果
- 抛出:
IllegalArgumentException
- 如果给定可执行文件、包或模块的类型- 看Java 语言规范:
-
5.1.10 捕获转换
-
getPrimitiveType
返回原始类型。- 参数:
kind
- 要返回的原始类型- 返回:
- 原始类型
- 抛出:
IllegalArgumentException
- 如果kind
不是原始类型
-
getNullType
NullType getNullType()返回空类型。这是null
的类型。- 返回:
- 空类型
-
getNoType
返回在实际类型不合适的情况下使用的伪类型。要返回的类型可以是VOID
或NONE
。要获取与包或模块对应的伪类型,请在建模 包 或 module 的元素上调用
asType()
。可以分别使用Elements.getPackageElement(CharSequence)
或Elements.getModuleElement(CharSequence)
将名称转换为包或模块的元素。- 参数:
kind
- 要返回的类型- 返回:
VOID
或NONE
的伪类型- 抛出:
IllegalArgumentException
- 如果kind
无效
-
getArrayType
返回具有指定组件类型的数组类型。- 参数:
componentType
- 组件类型- 返回:
- 具有指定组件类型的数组类型
- 抛出:
IllegalArgumentException
- 如果组件类型对数组无效
-
getWildcardType
返回一个新的通配符类型。可以指定通配符的边界,也可以两者都不指定,但不能同时指定两者。- 参数:
extendsBound
- 扩展(上限)边界,如果没有则为null
superBound
- 超(下)界,如果没有则为null
- 返回:
- 新的通配符类型
- 抛出:
IllegalArgumentException
- 如果边界无效
-
getDeclaredType
返回对应于类型元素和实际类型参数的类型。例如,给定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
当元素被视为给定类型的成员或直接包含给定类型时,返回该元素的类型。例如,当被视为参数化类型Set<String>
的成员时,Set.add
方法是一个ExecutableType
,其参数的类型为String
。- 参数:
containing
- 包含类型element
- 元素- 返回:
- 从包含类型看元素的类型
- 抛出:
IllegalArgumentException
- 如果元素不是给定类型的有效元素
-