モジュール java.compiler
パッケージ javax.lang.model

インタフェースAnnotatedConstruct

  • 既知のすべてのサブインタフェース:
    ArrayType, DeclaredType, Element, ErrorType, ExecutableElement, ExecutableType, IntersectionType, ModuleElement, NoType, NullType, PackageElement, Parameterizable, PrimitiveType, QualifiedNameable, ReferenceType, TypeElement, TypeMirror, TypeParameterElement, TypeVariable, UnionType, VariableElement, WildcardType


    public interface AnnotatedConstruct
    注釈付け可能なコンストラクトを表します。 コンストラクトはElementまたはのどちらかです。 要素の注釈は宣言に置かれ、型の注釈は型名の特定の使用に置かれます。 このインタフェースでは、ここで定義されているメソッドがどの注釈を返すかを正確に記述するために、直接存在している存在している間接的に存在している、および関連付けられているという用語を使用します。

    下記の定義において、注釈Aは注釈型ATを持っています。 ATが繰返し可能な注釈型の場合、包含する注釈の型はATCです。

    次のいずれかが成り立つ場合に、注釈AはコンストラクトC上に直接存在しています

    • ACのソース・コード表現に適用されるものとして、明示的または暗黙的に宣言されています。

      通常、Cのソース・コード表現にAT型の注釈が1つだけ現れる場合、ACに適用されるものとして明示的に宣言されています。 Cに存在する型ATの複数の注釈がある場合、ATが繰り返し可能な注釈型である場合、型ATCの注釈はC「暗黙のうちに宣言された」です。

    • クラス・ファイルのRuntimeVisibleAnnotations属性やRuntimeVisibleParameterAnnotations属性のように、Aの表現がCの実行可能出力に現れます。

    次のいずれかが成り立つ場合に、注釈AはコンストラクトC上に存在しています

    • AC上に直接存在しています。
    • CAT型の注釈が直接存在せず、Cはクラスであり、ATは継承可能で、CのスーパークラスにAが存在しています。
    次の両方が成り立つ場合に、注釈AはコンストラクトC上に間接的に存在しています
    • ATは繰返し可能な注釈型であり、包含する注釈の型はATCです。
    • CATC型の注釈が直接存在しており、その直接存在しているATC型の注釈のvalueメソッドを呼び出した結果に注釈Aが含まれています。
    次のいずれかが成り立つ場合に、注釈AはコンストラクトC関連付けられています
    • AC上に直接または間接的に存在しています。
    • CAT型の注釈が直接にも間接的にも存在せず、Cはクラスであり、ATは継承可能で、CのスーパークラスにAが関連付けられています。
    導入されたバージョン:
    1.8
    Java™言語仕様:
    9.6「注釈型」、9.6.3.3「@Inherited」
    • メソッドの詳細

      • getAnnotationMirrors

        List<? extends AnnotationMirror> getAnnotationMirrors​()
        このコンストラクトに直接存在する注釈を返します。
        戻り値:
        このコンストラクトに直接存在する注釈。存在しない場合は空のリスト
      • getAnnotation

        <A extends Annotation> A getAnnotation​(Class<A> annotationType)
        存在する場合は、このコンストラクトの指定された型の注釈を返し、そうでない場合はnullを返します。

        このメソッドが返す注釈には、Class型の値を持つ要素が含まれる場合があります。 この値は直接返されません。つまり、クラス・ローダーを使用するための情報など、クラスを見つけてロードするのに必要な情報は利用できません。 返される注釈で関連するメソッドを呼び出すことによりClassオブジェクトを読み込もうとすると、MirroredTypeExceptionが発生します。これから、対応するTypeMirrorを抽出することができます。 同様に、Class[]の値を持つ要素を読み込もうとすると、MirroredTypesExceptionが発生します。

        注: このメソッドは、このインタフェースや関連するインタフェース内のほかのメソッドとは異なります。 このメソッドは、これらのインタフェースにより定義され、これらのインタフェースを通じて使用される表現に対して操作を行うのではなく、実行時リフレクト情報(仮想マシンに現在ロードされている注釈型の表現)に対して操作を行います。 その結果、返された注釈オブジェクトでメソッドを呼び出すと、コア・リフレクションによって返された注釈オブジェクトでメソッドを呼び出したときにスローされる可能性のある例外の多くがスローされることがあります。 このメソッドは、注釈型の既知の固定セットに対して操作を行うように記述された呼出し側を対象としています。
        型パラメータ:
        A - 注釈型
        パラメータ:
        annotationType - 注釈型に対応するClassオブジェクト
        戻り値:
        存在する場合は、このコンストラクトの指定された注釈型の注釈。そうでない場合はnull
        関連項目:
        getAnnotationMirrors(), AnnotatedElement.getAnnotation(java.lang.Class<T>), EnumConstantNotPresentException, AnnotationTypeMismatchException, IncompleteAnnotationException, MirroredTypeException, MirroredTypesException
        Java™言語仕様:
        9.6.1「注釈型の要素」
      • getAnnotationsByType

        <A extends Annotation> A[] getAnnotationsByType​(Class<A> annotationType)
        このコンストラクトに関連付けられている注釈を返します。 このコンストラクトに関連付けられている注釈がない場合、戻り値は長さ0の配列です。 コンストラクトCに直接または間接的に存在している注釈の順序の計算では、Cに間接的に存在している注釈は、そのコンテナ注釈の場所に、コンテナ注釈の値要素内に現れる順序で、Cに直接存在しているかのように扱われます。 このメソッドとgetAnnotation(Class)の違いとして、このメソッドは引数が繰返し可能な注釈型かどうかを検出し、繰返し可能な注釈型であれば、コンテナ注釈を調べることでその型の注釈を1つ以上見つけようとします。

        このメソッドから返される注釈には、Class型の値を持つ要素が含まれている可能性があります。 この値は直接返されません。つまり、クラス・ローダーを使用するための情報など、クラスを見つけてロードするのに必要な情報は利用できません。 返される注釈で関連するメソッドを呼び出すことによりClassオブジェクトを読み込もうとすると、MirroredTypeExceptionが発生します。これから、対応するTypeMirrorを抽出することができます。 同様に、Class[]の値を持つ要素を読み込もうとすると、MirroredTypesExceptionが発生します。

        注: このメソッドは、このインタフェースや関連するインタフェース内のほかのメソッドとは異なります。 このメソッドは、これらのインタフェースにより定義され、これらのインタフェースを通じて使用される表現に対して操作を行うのではなく、実行時リフレクト情報(仮想マシンに現在ロードされている注釈型の表現)に対して操作を行います。 その結果、返された注釈オブジェクトでメソッドを呼び出すと、コア・リフレクションによって返された注釈オブジェクトでメソッドを呼び出したときにスローされる可能性のある例外の多くがスローされることがあります。 このメソッドは、注釈型の既知の固定セットに対して操作を行うように記述された呼出し側を対象としています。
        型パラメータ:
        A - 注釈型
        パラメータ:
        annotationType - 注釈型に対応するClassオブジェクト
        戻り値:
        存在する場合は、このコンストラクトの指定された注釈型の注釈。そうでない場合は空の配列
        関連項目:
        getAnnotationMirrors(), getAnnotation(Class), AnnotatedElement.getAnnotationsByType(Class), EnumConstantNotPresentException, AnnotationTypeMismatchException, IncompleteAnnotationException, MirroredTypeException, MirroredTypesException
        Java™言語仕様:
        9.6「注釈型」、9.6.1「注釈型の要素」