模块  java.compiler
软件包  javax.lang.model

Interface AnnotatedConstruct

  • All Known Subinterfaces:
    ArrayTypeDeclaredTypeElementErrorTypeExecutableElementExecutableTypeIntersectionTypeModuleElementNoTypeNullTypePackageElementParameterizablePrimitiveTypeQualifiedNameableReferenceTypeTypeElementTypeMirrorTypeParameterElementTypeVariableUnionTypeVariableElementWildcardType

    public interface AnnotatedConstruct
    表示可以注释的构造。 构造是elementtype 元素上的注释位于声明上 ,而类型上的注释位于类型名称的特定用途上。 在该界面中使用直接存在存在间接存在关联的术语来精确地描述通过本文定义的方法返回哪些注释。

    在下面的定义中,注释A具有注释类型AT 如果AT是可重复的注释类型,则包含注释的类型是ATC

    注释A 直接出现在构造C上,如果:

    • A显式或隐式声明为应用于C的源代码表示。

      通常,如果在C的表示的源代码中出现恰好一个AT类型的注释,则A被明确声明为应用于C。 如果在C上存在多个AT类型的注释,则如果AT是可重复的注释类型,则类型ATC的注释在C上为implicitly declared

    • A的表示显示在对C可执行输出,如RuntimeVisibleAnnotationsRuntimeVisibleParameterAnnotations一个类文件的属性。

    注释A 出现在构造C上,如果有:

    • A直接存在于C上
    • 没有类型AT的注释直接出现在C上C是一个类, AT是可继承的, A存在于C的超类中。
    注释A 间接出现在构造C上,如果两者:
    • AT是可重复的注释类型,包含注释类型ATC
    • 类型ATC的注释直接存在于C上A是包含在调用直接存在的ATC类型注释的value方法的结果中的注释。
    注释A与构造C 相关联 ,如果:
    • A直接或间接存在于C上
    • 没有类型AT的注释直接或间接地出现在C上C是一个类, AT是可继承的, AC的超类相关联。
    从以下版本开始:
    1.8
    See The Java™ Language Specification:
    9.6注释类型,9.6.3.3 @Inherited
    • 方法详细信息

      • getAnnotationMirrors

        List<? extends AnnotationMirror> getAnnotationMirrors()
        返回 直接出现在此构造上的注释。
        结果
        直接出现在这个结构上的注释; 如果没有,则为空列表
      • getAnnotation

        <A extends Annotation> A getAnnotation​(<A> annotationType)
        返回指定类型的这种构造的注解,如果这样的注释存在 ,否则null

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

        Note: This method is unlike others in this and related interfaces. It operates on runtime reflective information — representations of annotation types currently loaded into the VM — rather than on the representations defined by and used throughout these interfaces. Consequently, calling methods on the returned annotation object can throw many of the exceptions that can be thrown when calling methods on an annotation object returned by core reflection. This method is intended for callers that are written to operate on a known, fixed set of annotation types.
        参数类型
        A - 注释类型
        参数
        annotationType - 与注释类型对应的 对象
        结果
        此构造的指定注释类型的注释(如果存在),否则为 null
        另请参见:
        getAnnotationMirrors()AnnotatedElement.getAnnotation(java.lang.Class<T>)EnumConstantNotPresentExceptionAnnotationTypeMismatchExceptionIncompleteAnnotationExceptionMirroredTypeExceptionMirroredTypesException
        See The Java™ Language Specification:
        9.6.1注释类型元素
      • getAnnotationsByType

        <A extends Annotation> A[] getAnnotationsByType​(<A> annotationType)
        返回与此构造关联的注释。 如果没有用该构建体相关联的注释,返回值是长度为0注解,它们可直接或间接地存在于构建体C被计算为,如果第C间接本注释直接存在第C代替的顺序的阵列它们的容器注释的顺序,它们出现在容器注释的value元素中。 此方法与getAnnotation(Class)之间的区别在于此方法检测其参数是否为可重复的注释类型 ,如果是,则尝试通过“查看”容器注释来查找该类型的一个或多个注释。

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

        Note: This method is unlike others in this and related interfaces. It operates on runtime reflective information — representations of annotation types currently loaded into the VM — rather than on the representations defined by and used throughout these interfaces. Consequently, calling methods on the returned annotation object can throw many of the exceptions that can be thrown when calling methods on an annotation object returned by core reflection. This method is intended for callers that are written to operate on a known, fixed set of annotation types.
        参数类型
        A - 注释类型
        参数
        annotationType - 与注释类型对应的 对象
        结果
        如果在此构造中存在,则此构造的指定注释类型的注释,否则为空数组
        另请参见:
        getAnnotationMirrors()getAnnotation(Class)AnnotatedElement.getAnnotationsByType(Class)EnumConstantNotPresentExceptionAnnotationTypeMismatchExceptionIncompleteAnnotationExceptionMirroredTypeExceptionMirroredTypesException
        See The Java™ Language Specification:
        9.6注释类型,9.6.1注释类型元素