模块 java.compiler

接口 Types


public interface Types
对类型进行操作的实用方法。

兼容性说明:在平台的未来版本中,可能会将方法添加到此接口。

自从:
1.6
参见:
  • 方法详情

    • 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 对象是否为同一类型时,not 会考虑任一参数上的注释集。特别是,两个 TypeMirror 对象可以有不同的注释,但仍然被认为是相同的。

      参数:
      t1 - 第一种类型
      t2 - 第二种
      返回:
      true当且仅当两种类型相同
    • isSubtype

      boolean isSubtype(TypeMirror  t1, TypeMirror  t2)
      测试一种类型是否是另一种类型的子类型。任何类型都被认为是其自身的子类型。
      参数:
      t1 - 第一种类型
      t2 - 第二种
      返回:
      true 当且仅当第一种类型是第二种类型的子类型
      抛出:
      IllegalArgumentException - 如果给定可执行文件、包或模块的类型
      Java 语言规范:
      4.10 子类型化
    • isAssignable

      boolean isAssignable(TypeMirror  t1, TypeMirror  t2)
      测试一种类型是否可分配给另一种类型。
      参数:
      t1 - 第一种类型
      t2 - 第二种
      返回:
      true 当且仅当第一种类型可分配给第二种类型
      抛出:
      IllegalArgumentException - 如果给定可执行文件、包或模块的类型
      Java 语言规范:
      5.2 赋值上下文
    • contains

      boolean contains(TypeMirror  t1, TypeMirror  t2)
      测试一个类型参数是否contains其他。
      参数:
      t1 - 第一种类型
      t2 - 第二种
      返回:
      true 当且仅当第一种类型包含第二种
      抛出:
      IllegalArgumentException - 如果给定可执行文件、包或模块的类型
      Java 语言规范:
      4.5.1 参数化类型的类型参数
    • isSubsignature

      boolean isSubsignature(ExecutableType  m1, ExecutableType  m2)
      测试一个方法的签名是否是一个子签名另一个。
      参数:
      m1 - 第一种方法
      m2 - 第二种方法
      返回:
      true 当且仅当第一个签名是第二个签名的子签名
      Java 语言规范:
      8.4.2 方法签名
    • directSupertypes

      List <? extends TypeMirror > directSupertypes(TypeMirror  t)
      返回类型的直接超类型。接口类型(如果有)将出现在列表的最后。对于没有直接超接口的接口类型,返回表示java.lang.Object 的类型镜像。类型 java.lang.Object 没有直接超类型(JLS 8.1.4 , 8.1.5 ),因此为表示 java.lang.Object 的类型镜像的直接超类型返回一个空列表。
      参数:
      t - 正在检查的类型
      返回:
      直接超类型,如果没有则为空列表
      抛出:
      IllegalArgumentException - 如果给定可执行文件、包或模块的类型
      Java 语言规范:
      4.10 子类型化
    • erasure

      TypeMirror  erasure(TypeMirror  t)
      返回类型的擦除。
      参数:
      t - 要擦除的类型
      返回:
      类型的擦除
      抛出:
      IllegalArgumentException - 如果给定包或模块的类型
      Java 语言规范:
      4.6 类型擦除
    • boxedClass

      TypeElement  boxedClass(PrimitiveType  p)
      返回基本类型参数的装箱值的类。那是,拳击转换被申请;被应用。
      参数:
      p - 要转换的基本类型
      返回:
      原始类型参数的装箱值的类
      Java 语言规范:
      5.1.7 装箱转换
    • unboxedType

      PrimitiveType  unboxedType(TypeMirror  t)
      返回给定类型的未装箱值的类型(基本类型)。那是,拆箱转换被申请;被应用。
      参数:
      t - 要拆箱的类型
      返回:
      t 类型的未装箱值的类型
      抛出:
      IllegalArgumentException - 如果给定类型没有拆箱转换
      Java 语言规范:
      5.1.8 拆箱转换
    • capture

      TypeMirror  capture(TypeMirror  t)
      将捕获转换应用于类型。
      参数:
      t - 要转换的类型
      返回:
      应用捕获转换的结果
      抛出:
      IllegalArgumentException - 如果给定可执行文件、包或模块的类型
      Java 语言规范:
      5.1.10 捕获转换
    • getPrimitiveType

      PrimitiveType  getPrimitiveType(TypeKind  kind)
      返回原始类型。
      参数:
      kind - 要返回的原始类型
      返回:
      原始类型
      抛出:
      IllegalArgumentException - 如果 kind 不是原始类型
    • getNullType

      NullType  getNullType()
      返回空类型。这是 null 的类型。
      返回:
      空类型
    • getNoType

      NoType  getNoType(TypeKind  kind)
      返回在实际类型不合适的情况下使用的伪类型。要返回的类型可以是 VOID NONE

      要获取与包或模块对应的伪类型,请在建模 module 的元素上调用 asType()。可以分别使用 Elements.getPackageElement(CharSequence) Elements.getModuleElement(CharSequence) 将名称转换为包或模块的元素。

      参数:
      kind - 要返回的类型
      返回:
      VOIDNONE 的伪类型
      抛出:
      IllegalArgumentException - 如果 kind 无效
    • getArrayType

      ArrayType  getArrayType(TypeMirror  componentType)
      返回具有指定组件类型的数组类型。
      参数:
      componentType - 组件类型
      返回:
      具有指定组件类型的数组类型
      抛出:
      IllegalArgumentException - 如果组件类型对数组无效
    • getWildcardType

      WildcardType  getWildcardType(TypeMirror  extendsBound, TypeMirror  superBound)
      返回一个新的通配符类型。可以指定通配符的边界,也可以两者都不指定,但不能同时指定两者。
      参数:
      extendsBound - 扩展(上限)边界,如果没有则为 null
      superBound - 超(下)界,如果没有则为 null
      返回:
      新的通配符类型
      抛出:
      IllegalArgumentException - 如果边界无效
    • getDeclaredType

      DeclaredType  getDeclaredType(TypeElement  typeElem, TypeMirror ... typeArgs)
      返回对应于类型元素和实际类型参数的类型。例如,给定 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

      TypeMirror  asMemberOf(DeclaredType  containing, Element  element)
      当元素被视为给定类型的成员或直接包含给定类型时,返回该元素的类型。例如,当被视为参数化类型 Set<String> 的成员时, Set.add 方法是一个 ExecutableType ,其参数的类型为 String
      参数:
      containing - 包含类型
      element - 元素
      返回:
      从包含类型看元素的类型
      抛出:
      IllegalArgumentException - 如果元素不是给定类型的有效元素