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

Interface AnnotatedConstruct

  • All Known Subinterfaces:
    ArrayTypeDeclaredTypeElementErrorTypeExecutableElementExecutableTypeIntersectionTypeModuleElementNoTypeNullTypePackageElementParameterizablePrimitiveTypeQualifiedNameableReferenceTypeTypeElementTypeMirrorTypeParameterElementTypeVariableUnionTypeVariableElementWildcardType


    public interface AnnotatedConstruct
    表示可以注释的构造。 一个构造是一个element或一个type 元素上的注释位于声明上 ,而类型上的注释是特定用途的类型名称。 直接呈现呈现间接呈现关联的术语在整个界面被使用以精确描述本文定义的方法返回哪些注释。

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

    注释A 直接存在于构造C上:

    • A被明确或隐含地声明为适用于C的源代码表示。

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

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

    注释A 存在于构造C上:

    • A直接出现在C上
    • 没有类型AT的注释直接出现在C上C是一个类, AT是可继承的, AC的超类上。
    注释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 @继承
    • 方法详细信息

      • getAnnotationMirrors

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

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

        此方法返回的注释可能包含一个值为Class的元素。 此值无法直接返回:查找和加载类(例如要使用的类加载器)所需的信息不可用,并且该类可能无法加载。 通过对返回的注释调用相关方法,尝试读取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 - 对应于注释类型的 Class对象
        结果
        该构造体对于指定注释类型的注释(如果存在),否则为 null
        另请参见:
        getAnnotationMirrors()AnnotatedElement.getAnnotation(java.lang.Class<T>)EnumConstantNotPresentExceptionAnnotationTypeMismatchExceptionIncompleteAnnotationExceptionMirroredTypeExceptionMirroredTypesException
        See The Java™ Language Specification:
        9.6.1注释类型元素
      • getAnnotationsByType

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

        此方法返回的注释可能包含一个值为Class的元素。 此值无法直接返回:查找和加载类(例如要使用的类加载器)所需的信息不可用,并且该类可能无法加载。 通过调用返回注释的相关方法,尝试读取一个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 - 对应于注释类型的 Class对象
        结果
        这个构造体对于指定的注释类型的注释,如果存在于此构造上,否则为空数组
        另请参见:
        getAnnotationMirrors()getAnnotation(Class)AnnotatedElement.getAnnotationsByType(Class)EnumConstantNotPresentExceptionAnnotationTypeMismatchExceptionIncompleteAnnotationExceptionMirroredTypeExceptionMirroredTypesException
        See The Java™ Language Specification:
        9.6注释类型,9.6.1注释类型元素