Module  java.compiler
软件包  javax.lang.model.util

Interface Types



  • public interface Types
    用于操作类型的实用方法。

    兼容性注意:在将来的平台版本中可能会添加到此界面中的方法。

    从以下版本开始:
    1.6
    另请参见:
    ProcessingEnvironment.getTypeUtils()
    • 方法详细信息

      • asElement

        Element asElement​(TypeMirror t)
        返回与类型相对应的元素。 该类型可能是DeclaredTypeTypeVariable 如果类型不是相应的元素,则返回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捕获转换
      • getNullType

        NullType getNullType​()
        返回null类型。 这是null的类型。
        结果
        空类型
      • 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 - 如果元素不是给定类型的有效元素