-
public interface Types
用于操作类型的实用方法。兼容性注意:在将来的平台版本中可能会添加到此界面中的方法。
- 从以下版本开始:
- 1.6
- 另请参见:
-
ProcessingEnvironment.getTypeUtils()
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 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)
返回与类型元素和实际类型参数对应的类型,给出一个 containing type它是其成员。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
。- 参数
-
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
- 如果给出可执行文件,包或模块的类型 - See The Java™ Language Specification:
- 4.10子类型
-
isAssignable
boolean isAssignable(TypeMirror t1, TypeMirror t2)
测试一种类型是否可分配给另一种。- 参数
-
t1
- 第一种 -
t2
- 第二种类型 - 结果
-
true
当且仅当第一个类型可分配给第二个类型 - 异常
-
IllegalArgumentException
- 如果给出可执行文件,包或模块的类型 - See The Java™ Language Specification:
- 5.2作业转换
-
contains
boolean contains(TypeMirror t1, TypeMirror t2)
测试一个类型参数是否 包含另一个参数。- 参数
-
t1
- 第一种 -
t2
- 第二种 - 结果
-
true
当且仅当第一个类型包含第二个类型 - 异常
-
IllegalArgumentException
- 如果给出可执行文件,包或模块的类型 - See The Java™ Language Specification:
- 4.5.1.1类型论证遏制和等价
-
isSubsignature
boolean isSubsignature(ExecutableType m1, ExecutableType m2)
测试一个方法的签名是否是另一个类的 子签名 。- 参数
-
m1
- 第一种方法 -
m2
- 第二种方法 - 结果
-
true
当且仅当所述第一签名是第二的子签名 - See The Java™ Language Specification:
- 8.4.2方法签名
-
directSupertypes
List<? extends TypeMirror> directSupertypes(TypeMirror t)
返回类型的直接超类型。 界面类型(如果有)将在列表中最后显示。 对于没有直接超级接口的接口类型,返回表示java.lang.Object
的类型镜像。- 参数
-
t
- 被检查的类型 - 结果
- 直接超类型,或空列表,如果没有
- 异常
-
IllegalArgumentException
- 如果给出可执行文件,包或模块的类型 - See The Java™ Language Specification:
- 4.10子类型
-
erasure
TypeMirror erasure(TypeMirror t)
返回类型的擦除。- 参数
-
t
- 要擦除的类型 - 结果
- 给定类型的擦除
- 异常
-
IllegalArgumentException
- 如果给定一个包或模块的类型 - See The Java™ Language Specification:
- 4.6类型擦除
-
boxedClass
TypeElement boxedClass(PrimitiveType p)
返回给定基元类型的盒装值的类。 也就是说,应用拳击转换 。- 参数
-
p
- 要转换的原始类型 - 结果
-
类型为
p
的盒装值的类 - See The Java™ Language Specification:
- 5.1.7拳击转换
-
unboxedType
PrimitiveType unboxedType(TypeMirror t)
返回给定类型的未装箱值的类型(原始类型)。 也就是说,应用拆箱转换 。- 参数
-
t
- 要取消装箱的类型 - 结果
-
未装箱值类型为
t
的类型 - 异常
-
IllegalArgumentException
- 如果给定类型没有拆箱转换 - See The Java™ Language Specification:
- 5.1.8拆箱转换
-
capture
TypeMirror capture(TypeMirror t)
将捕获转换应用于类型。- 参数
-
t
- 要转换的类型 - 结果
- 应用捕获转换的结果
- 异常
-
IllegalArgumentException
- 如果给出可执行文件,包或模块的类型 - See The Java™ Language Specification:
- 5.1.10捕获转换
-
getPrimitiveType
PrimitiveType getPrimitiveType(TypeKind kind)
返回一个原始类型。- 参数
-
kind
- 要返回的原始类型 - 结果
- 原始类型
- 异常
-
IllegalArgumentException
- 如果kind
不是原始类型
-
getNullType
NullType getNullType()
返回null类型。 这是null
的类型。- 结果
- 空类型
-
getNoType
NoType getNoType(TypeKind kind)
返回在没有实际类型适用的情况下使用的伪类型。 要返回的类型可以是VOID
或NONE
。要获得对应于一个封装或模块的伪类型,呼叫
asType()
元素建模上package或module 。 可以使用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
- extend(upper)bound,或者是null
如果没有 -
superBound
- 超(下限),如果没有,null
- 结果
- 一个新的通配符
- 异常
-
IllegalArgumentException
- 如果边界无效
-
getDeclaredType
DeclaredType getDeclaredType(TypeElement typeElem, TypeMirror... typeArgs)
返回与类型元素和实际类型参数相对应的类型。 鉴于该类型元件Set
和用于类型镜String
,例如,该方法可用于获得参数化的类型Set<String>
。类型参数的数量必须等于类型元素的形式类型参数的数量,或者必须为零。 如果为零,并且如果type元素是通用的,则返回类型元素的原始类型。
如果返回了一个参数化类型,则它的type元素不能包含在通用外部类中。 例如,参数化类型
Outer<String>.Inner<Number>
可以通过首先使用该方法获得类型Outer<String>
,然后调用getDeclaredType(DeclaredType, TypeElement, TypeMirror...)
来构造 。- 参数
-
typeElem
- 类型元素 -
typeArgs
- 实际的类型参数 - 结果
- 该类型对应于type元素和实际类型参数
- 异常
-
IllegalArgumentException
- 如果给出太多或太少的类型参数,或者是否提供了不适当的类型参数或类型元素
-
getDeclaredType
DeclaredType getDeclaredType(DeclaredType containing, TypeElement typeElem, TypeMirror... typeArgs)
返回与类型元素和实际类型参数相对应的类型,给出一个containing type它是其成员。 例如,参数化类型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
- 如果元素不是给定类型的有效元素
-
-