模块  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的类型。
        结果
        null类型
      • 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 - 如果元素不是给定类型的有效元素