-
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)
返回与type元素和实际类型参数对应的类型。DeclaredType
getDeclaredType(DeclaredType containing, TypeElement typeElem, TypeMirror... typeArgs)
返回与type元素和实际类型参数对应的类型,给定 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
的类型。- 结果
- null类型
-
getNoType
NoType getNoType(TypeKind kind)
返回在没有实际类型的情况下使用的伪类型。 要返回的类型可以是VOID
或NONE
。要获得对应于一个封装或模块的伪类型,呼叫
asType()
元素建模上package或模块 。 可以分别使用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
- extends(upper)bound,如果没有,null
-
superBound
- 超级(下限),如果没有,null
- 结果
- 一个新的通配符
- 异常
-
IllegalArgumentException
- 如果边界无效
-
getDeclaredType
DeclaredType getDeclaredType(TypeElement typeElem, TypeMirror... typeArgs)
返回与type元素和实际类型参数对应的类型。 鉴于该类型元件Set
和用于类型镜String
,例如,该方法可用于获得参数化的类型Set<String>
。类型参数的数量必须等于type元素的形式类型参数的数量,或者必须为零。 如果为零,并且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)
返回与type元素和实际类型参数对应的类型,给定它是其成员的containing type 。 例如,参数化类型Outer<String>.Inner<Number>
可以通过首先使用getDeclaredType(TypeElement, TypeMirror...)
获取类型Outer<String>
,然后调用此方法来构造。如果包含类型是参数化类型,则类型参数的数量必须等于
typeElem
的正式类型参数的数量。 如果未参数化或者如果它是null
,则此方法等效于getDeclaredType(typeElem, typeArgs)
。- 参数
-
containing
- 包含类型,如果没有,null
-
typeElem
- 类型元素 -
typeArgs
- 实际的类型参数 - 结果
- 与给定类型中包含的type元素和实际类型参数对应的类型
- 异常
-
IllegalArgumentException
- 如果给出的类型参数太多或太少,或者提供了不合适的类型参数,类型元素或包含类型
-
asMemberOf
TypeMirror asMemberOf(DeclaredType containing, Element element)
当该元素被视为给定类型的成员或以其他方式直接包含时,返回该元素的类型。 例如,当作为参数化类型Set<String>
的成员查看时,Set.add
方法是ExecutableType
其参数类型为String
。- 参数
-
containing
- 包含类型 -
element
- 元素 - 结果
- 从包含类型查看的元素类型
- 异常
-
IllegalArgumentException
- 如果元素不是给定类型的有效元素
-
-