Module java.compiler

Interface TypeMirror

所有超级接口:
AnnotatedConstruct
所有已知子接口:
ArrayType, DeclaredType, ErrorType, ExecutableType, IntersectionType, NoType, NullType, PrimitiveType, ReferenceType, TypeVariable, UnionType, WildcardType

public interface TypeMirror extends AnnotatedConstruct
代表Java编程语言中的类型。类型包括原始类型、声明类型(类和接口类型)、数组类型、类型变量和空类型。还表示通配符类型参数、可执行体的签名和返回类型,以及对应于包、模块和关键字void的伪类型。

应使用Types中的实用方法来比较类型。不能保证任何特定类型始终由相同的对象表示。

要基于 TypeMirror对象的类实现操作,要么使用访问者,要么使用getKind()方法的结果。在此建模层次结构中,使用 instanceof并不一定是确定对象的有效类的可靠习语,因为实现可能选择使单个对象实现多个TypeMirror子接口。

参见Java语言规范:
4.1 类型和值的种类
4.2 原始类型和值
4.3 引用类型和值
4.4 类型变量
4.5 参数化类型
4.8 原始类型
4.9 交集类型
10.1 数组类型
自1.6起:
1.6
另请参见:
  • Method Details

    • getKind

      TypeKind getKind()
      返回此类型的kind
      返回:
      此类型的kind
    • equals

      boolean equals(Object obj)
      遵守Object.equals的一般契约。但是,此方法不指示两个类型是否表示相同类型。类型相等的语义比较应改用Types.isSameType(TypeMirror, TypeMirror)t1.equals(t2)Types.isSameType(t1, t2)的结果可能不同。
      覆盖:
      equals 在类 Object
      参数:
      obj - 要与此类型进行比较的对象
      返回:
      如果指定对象等于此对象,则返回true
      另请参见:
    • hashCode

      int hashCode()
      遵守Object.hashCode的一般契约。
      覆盖:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      另请参见:
    • toString

      String toString()
      返回此类型的信息性字符串表示。如果可能,字符串应采用适合在源代码中表示此类型的形式。结果中嵌入的任何名称如果可能应该是合格的。
      覆盖:
      toString 在类 Object
      返回:
      此类型的字符串表示
    • getAnnotationMirrors

      List<? extends AnnotationMirror> getAnnotationMirrors()
      返回直接存在于此构造上的注解。

      请注意,此方法返回的任何注解都是类型注解。

      指定者:
      getAnnotationMirrors 在接口 AnnotatedConstruct
      返回:
      直接存在于此构造上的注解;如果没有,则返回空列表
      自1.8起:
      1.8
    • getAnnotation

      <A extends Annotation> A getAnnotation(Class<A> annotationType)
      返回指定类型的注解,如果存在此类注解,则返回该注解,否则返回null

      此方法返回的注解可能包含一个值为Class类型的元素。该值无法直接返回:无法获取定位和加载类所需的信息(例如要使用的类加载器),并且该类可能根本无法加载。尝试通过调用返回的注解上的相关方法来读取Class对象将导致MirroredTypeException,从中可以提取相应的TypeMirror。类似地,尝试读取Class[]值元素将导致MirroredTypesException

      注意:此方法与此接口及相关接口中的其他方法不同。它操作运行时反射信息 —— 当前加载到VM中的注解接口的表示 —— 而不是这些接口中定义并在整个接口中使用的表示。因此,调用返回的注解对象上的方法可能会引发许多在核心反射中调用返回的注解对象上调用方法时可能引发的异常。此方法适用于编写为操作已知、固定注解接口集的调用者。

      请注意,此方法返回的任何注解都是类型注解。

      指定者:
      getAnnotation 在接口 AnnotatedConstruct
      类型参数:
      A - 注解接口
      参数:
      annotationType - 对应于注解接口的Class对象
      返回:
      如果存在指定类型的注解,则返回此构造的注解,否则返回null
      自版本:
      1.8
      参见:
    • getAnnotationsByType

      <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType)
      返回与此构造关联的注解。如果没有与此构造关联的注解,则返回值为长度为0的数组。直接或间接存在于构造C上的注解的顺序将计算为如果在构造C上间接存在的注解在其容器注解的值元素中以它们出现的顺序直接存在于构造C上。此方法与AnnotatedConstruct.getAnnotation(Class)之间的区别在于,此方法检测其参数是否为可重复注解接口,如果是,则尝试通过“查找”容器注解来找到一个或多个该类型的注解。

      此方法返回的注解可能包含一个值为Class类型的元素。该值无法直接返回:无法获取定位和加载类所需的信息(例如要使用的类加载器),并且该类可能根本无法加载。尝试通过调用返回的注解上的相关方法来读取Class对象将导致MirroredTypeException,从中可以提取相应的TypeMirror。类似地,尝试读取Class[]值元素将导致MirroredTypesException

      注意:此方法与此接口及相关接口中的其他方法不同。它操作运行时反射信息 —— 当前加载到VM中的注解接口的表示 —— 而不是这些接口中定义并在整个接口中使用的表示。因此,调用返回的注解对象上的方法可能会引发许多在核心反射中调用返回的注解对象上调用方法时可能引发的异常。此方法适用于编写为操作已知、固定注解接口集的调用者。

      请注意,此方法返回的任何注解都是类型注解。

      指定者:
      getAnnotationsByType 在接口 AnnotatedConstruct
      类型参数:
      A - 注解接口
      参数:
      annotationType - 对应于注解接口的Class对象
      返回:
      如果此构造上存在指定注解类型的注解,则返回此构造的注解,否则返回空数组
      自版本:
      1.8
      参见:
    • accept

      <R, P> R accept(TypeVisitor<R,P> v, P p)
      对此类型应用访问者。
      类型参数:
      R - 访问者方法的返回类型
      P - 访问者方法的附加参数的类型
      参数:
      v - 操作此类型的访问者
      p - 访问者的附加参数
      返回:
      访问者指定的结果