クラス AnnotatedElementUtils

java.lang.ObjectSE
org.springframework.core.annotation.AnnotatedElementUtils

public abstract class AnnotatedElementUtils extends ObjectSE
AnnotatedElementsSE でアノテーション、メタアノテーション、反復可能なアノテーションを見つけるための一般的なユーティリティメソッド。

AnnotatedElementUtils は、アノテーション属性オーバーライドをサポートする Spring のメタアノテーションプログラミングモデルのパブリック API を定義します。アノテーション属性のオーバーライドをサポートする必要がない場合は、代わりに AnnotationUtils の使用を検討してください。

このクラスの機能は、JDK のイントロスペクション機能自体では提供されないことに注意してください。

アノテーション属性のオーバーライド

合成アノテーションの 属性オーバーライドを使用したメタアノテーションのサポートは、getMergedAnnotationAttributes()getMergedAnnotation()getAllMergedAnnotations()getMergedRepeatableAnnotations()findMergedAnnotationAttributes()findMergedAnnotation()findAllMergedAnnotations()findMergedRepeatableAnnotations() メソッドのすべてのバリアントによって提供されます。

セマンティクスの検索と取得

このクラスのメソッドで使用される検索アルゴリズムは、検索または取得のセマンティクスに従います。使用される検索アルゴリズムの詳細については、各メソッドの javadoc を参照してください。

セマンティクスを取得するは、AnnotatedElement に存在する(つまり、ローカルで宣言されているか継承SEされている)アノテーション、または AnnotatedElementのアノテーション階層内で宣言されているアノテーションの検索に限定されています。

セマンティクスを見つけるはより包括的であり、get セマンティクスと次のサポートを提供します。

  • アノテーション付き要素がクラスである場合、インターフェースで検索
  • アノテーション付き要素がクラスの場合、スーパークラスの検索
  • アノテーション付き要素がメソッドである場合のブリッジメソッドの解決
  • アノテーション付き要素がメソッドの場合、インターフェースでのメソッドの検索
  • アノテーション付き要素がメソッドの場合、スーパークラスのメソッドの検索

@Inherited のサポート

get セマンティクスに続くメソッドは、継承されたアノテーションよりもローカルで宣言されたアノテーション(カスタム構成アノテーションを含む)が優先されることを除いて、Java の @InheritedSE アノテーションの規約に従います。対照的に、find セマンティクスに従うメソッドは、@Inherited の存在を完全に無視します。これは、find 検索アルゴリズムが手動で型とメソッドの階層をトラバースし、@Inherited を必要とせずに暗黙的にアノテーションの継承をサポートするためです。

導入:
4.0
作成者:
Phillip Webb, Juergen Hoeller, Sam Brannen
関連事項:
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    static <A extends AnnotationSE>
    SetSE<A>
    指定された elementのアノテーション階層内で、指定された annotationType のすべてのアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    指定された elementのアノテーション階層内で、指定された annotationTypes のすべてのアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を対応する annotationType のアノテーションに合成します。
    static <A extends AnnotationSE>
    A
    findMergedAnnotation(AnnotatedElementSE element, ClassSE<A> annotationType)
    指定された elementのアノテーション階層内で指定された annotationType の最初のアノテーションを見つけ、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションからの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    findMergedAnnotationAttributes(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
    指定された element ののアノテーション階層内で指定された annotationType の最初のアノテーションを検索し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。
    findMergedAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
    指定された element ののアノテーション階層内で指定された annotationName の最初のアノテーションを検索し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。
    static <A extends AnnotationSE>
    SetSE<A>
    指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    static <A extends AnnotationSE>
    SetSE<A>
    findMergedRepeatableAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType, ClassSE<? extends AnnotationSE> containerType)
    指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    通常は AnnotatedElementUtils の他のメソッドで使用するために、指定されたアノテーションに適応した AnnotatedElementSE を構築します。
    指定された AnnotatedElementSE の上のアノテーション階層にある指定された annotationName のすべてのアノテーションのアノテーション属性を取得し、結果を MultiValueMap に保存します。
    getAllAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
    指定された AnnotatedElementSE の上のアノテーション階層にある指定された annotationName のすべてのアノテーションのアノテーション属性を取得し、結果を MultiValueMap に保存します。
    static <A extends AnnotationSE>
    SetSE<A>
    指定された elementのアノテーション階層内で、指定された annotationType のすべてのアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    指定された elementのアノテーション階層内で、指定された annotationTypes のすべてのアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を対応する annotationType のアノテーションに合成します。
    static <A extends AnnotationSE>
    A
    getMergedAnnotation(AnnotatedElementSE element, ClassSE<A> annotationType)
    指定された elementのアノテーション階層内の指定された annotationType の最初のアノテーションを取得し、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    指定された element ののアノテーション階層内で指定された annotationType の最初のアノテーションを取得し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。
    指定された element ののアノテーション階層内で指定された annotationName の最初のアノテーションを取得し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。
    getMergedAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
    指定された element ののアノテーション階層内で指定された annotationName の最初のアノテーションを取得し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。
    static <A extends AnnotationSE>
    SetSE<A>
    指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    static <A extends AnnotationSE>
    SetSE<A>
    getMergedRepeatableAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType, ClassSE<? extends AnnotationSE> containerType)
    指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。
    static SetSE<StringSE>
    指定された AnnotatedElementSE の(指定された annotationType の)アノテーションに存在するすべてのメタアノテーション型の完全修飾クラス名を取得します。
    static SetSE<StringSE>
    指定された AnnotatedElementSE の(指定された annotationName の)アノテーションに存在するすべてのメタアノテーション型の完全修飾クラス名を取得します。
    static boolean
    hasAnnotation(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType)
    指定された annotationType のアノテーションが、提供された AnnotatedElementSE で、指定された要素ののアノテーション階層内で使用可能かどうかを判別します。
    static boolean
    提供された AnnotatedElementSE が、指定された annotationType のアノテーションでメタアノテーションが付けられた合成アノテーションでアノテーションが付けられているかどうかを判別します。
    static boolean
    提供された AnnotatedElementSE が、指定された annotationName のアノテーションでメタアノテーションが付けられた合成アノテーションでアノテーションが付けられているかどうかを判別します。
    static boolean
    isAnnotated(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType)
    指定された annotationType のアノテーションが、指定された AnnotatedElementSE存在するか、指定された要素ののアノテーション階層内に存在するかを判別します。
    static boolean
    isAnnotated(AnnotatedElementSE element, StringSE annotationName)
    指定された annotationName のアノテーションが、指定された AnnotatedElementSE存在するか、指定された要素ののアノテーション階層内に存在するかを判別します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • コンストラクターの詳細

    • AnnotatedElementUtils

      public AnnotatedElementUtils()
  • メソッドの詳細

    • forAnnotations

      public static AnnotatedElementSE forAnnotations(AnnotationSE... annotations)
      通常は AnnotatedElementUtils の他のメソッドで使用するために、指定されたアノテーションに適応した AnnotatedElementSE を構築します。
      パラメーター:
      annotations - AnnotatedElement を通じて公開するアノテーション
      導入:
      4.3
    • getMetaAnnotationTypes

      public static SetSE<StringSE> getMetaAnnotationTypes(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType)
      指定された AnnotatedElementSE の(指定された annotationType の)アノテーションに存在するすべてのメタアノテーション型の完全修飾クラス名を取得します。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationType - メタアノテーションを検索するアノテーション型
      戻り値:
      アノテーションに存在するすべてのメタアノテーションの名前、または見つからない場合は空のセット
      導入:
      4.2
      関連事項:
    • getMetaAnnotationTypes

      public static SetSE<StringSE> getMetaAnnotationTypes(AnnotatedElementSE element, StringSE annotationName)
      指定された AnnotatedElementSE の(指定された annotationName の)アノテーションに存在するすべてのメタアノテーション型の完全修飾クラス名を取得します。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationName - メタアノテーションを検索するアノテーション型の完全修飾クラス名
      戻り値:
      アノテーションに存在するすべてのメタアノテーションの名前、または見つからない場合は空のセット
      関連事項:
    • hasMetaAnnotationTypes

      public static boolean hasMetaAnnotationTypes(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType)
      提供された AnnotatedElementSE が、指定された annotationType のアノテーションでメタアノテーションが付けられた合成アノテーションでアノテーションが付けられているかどうかを判別します。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationType - 検索するメタアノテーション型
      戻り値:
      true (一致するメタアノテーションが存在する場合)
      導入:
      4.2.3
      関連事項:
    • hasMetaAnnotationTypes

      public static boolean hasMetaAnnotationTypes(AnnotatedElementSE element, StringSE annotationName)
      提供された AnnotatedElementSE が、指定された annotationName のアノテーションでメタアノテーションが付けられた合成アノテーションでアノテーションが付けられているかどうかを判別します。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationName - 検索するメタアノテーション型の完全修飾クラス名
      戻り値:
      true (一致するメタアノテーションが存在する場合)
      関連事項:
    • isAnnotated

      public static boolean isAnnotated(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType)
      指定された annotationType のアノテーションが、指定された AnnotatedElementSE存在するか、指定された要素ののアノテーション階層内に存在するかを判別します。

      このメソッドが true を返す場合、getMergedAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>) は null 以外の値を返します。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationType - 検索するアノテーション型
      戻り値:
      一致するアノテーションが存在する場合は true 
      導入:
      4.2.3
      関連事項:
    • isAnnotated

      public static boolean isAnnotated(AnnotatedElementSE element, StringSE annotationName)
      指定された annotationName のアノテーションが、指定された AnnotatedElementSE存在するか、指定された要素ののアノテーション階層内に存在するかを判別します。

      このメソッドが true を返す場合、getMergedAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>) は null 以外の値を返します。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationName - 検索するアノテーション型の完全修飾クラス名
      戻り値:
      一致するアノテーションが存在する場合は true 
    • getMergedAnnotationAttributes

      @Nullable public static AnnotationAttributes getMergedAnnotationAttributes(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType)
      指定された element ののアノテーション階層内で指定された annotationType の最初のアノテーションを取得し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは getMergedAnnotationAttributes(AnnotatedElement, String) に委譲します。

      パラメーター:
      element - アノテーション付き要素
      annotationType - 検索するアノテーション型
      戻り値:
      マージされた AnnotationAttributes、または見つからない場合は null 
      導入:
      4.2
      関連事項:
    • getMergedAnnotationAttributes

      @Nullable public static AnnotationAttributes getMergedAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName)
      指定された element ののアノテーション階層内で指定された annotationName の最初のアノテーションを取得し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは getMergedAnnotationAttributes(AnnotatedElement, String, boolean, boolean) に委譲し、classValuesAsString および nestedAnnotationsAsMap に false を提供します。

      パラメーター:
      element - アノテーション付き要素
      annotationName - 検索するアノテーション型の完全修飾クラス名
      戻り値:
      マージされた AnnotationAttributes、または見つからない場合は null 
      導入:
      4.2
      関連事項:
    • getMergedAnnotationAttributes

      @Nullable public static AnnotationAttributes getMergedAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
      指定された element ののアノテーション階層内で指定された annotationName の最初のアノテーションを取得し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。

      アノテーション階層の下位レベルの属性は、上位レベルの同じ名前の属性をオーバーライドし、@AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされます。

      getAllAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.String) とは異なり、このメソッドで使用される検索アルゴリズムは、指定された annotationName の最初のアノテーションが見つかると、アノテーション階層の検索を停止します。結果として、指定された annotationName の追加のアノテーションは無視されます。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationName - 検索するアノテーション型の完全修飾クラス名
      classValuesAsString - クラス参照を文字列に変換するか、クラス参照として保持するか
      nestedAnnotationsAsMap - ネストされた Annotation インスタンスを AnnotationAttributes マップに変換するか、Annotation インスタンスとして保持するか
      戻り値:
      マージされた AnnotationAttributes、または見つからない場合は null 
      導入:
      4.2
      関連事項:
    • getMergedAnnotation

      @Nullable public static <A extends AnnotationSE> A getMergedAnnotation(AnnotatedElementSE element, ClassSE<A> annotationType)
      指定された elementのアノテーション階層内の指定された annotationType の最初のアノテーションを取得し、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      パラメーター:
      element - アノテーション付き要素
      annotationType - 検索するアノテーション型
      戻り値:
      マージ、合成された Annotation、見つからない場合は null 
      導入:
      4.2
      関連事項:
    • getAllMergedAnnotations

      public static <A extends AnnotationSE> SetSE<A> getAllMergedAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType)
      指定された elementのアノテーション階層内で、指定された annotationType のすべてのアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationType - 検索するアノテーション型 (非 null)
      戻り値:
      マージされ、合成されたすべての Annotations のセットが見つかりました。見つからなかった場合は空のセット
      導入:
      4.3
      関連事項:
    • getAllMergedAnnotations

      public static SetSE<AnnotationSE> getAllMergedAnnotations(AnnotatedElementSE element, SetSE<ClassSE<? extends AnnotationSE>> annotationTypes)
      指定された elementのアノテーション階層内で、指定された annotationTypes のすべてのアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を対応する annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationTypes - 検索するアノテーション型
      戻り値:
      マージされ、合成されたすべての Annotations のセットが見つかりました。見つからなかった場合は空のセット
      導入:
      5.1
      関連事項:
    • getMergedRepeatableAnnotations

      public static <A extends AnnotationSE> SetSE<A> getMergedRepeatableAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType)
      指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      繰り返し可能なアノテーションを保持するコンテナー型は、RepeatableSE を介して検索されます。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationType - 検索するアノテーション型 (非 null)
      戻り値:
      見つかったすべてのマージされた繰り返し可能な Annotations のセット、または何も見つからなかった場合は空のセット
      例外:
      IllegalArgumentExceptionSE - element または annotationType が null である場合、またはコンテナー型を解決できない場合
      導入:
      4.3
      関連事項:
    • getMergedRepeatableAnnotations

      public static <A extends AnnotationSE> SetSE<A> getMergedRepeatableAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType, @Nullable ClassSE<? extends AnnotationSE> containerType)
      指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを取得します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      警告 : 提供された containerType が null でない場合、検索は、コンテナーが提供された containerType である反復可能なアノテーションのみをサポートするように制限されます。これにより、他の型の繰り返し可能なアノテーションでメタアノテーションとして宣言された繰り返し可能なアノテーションが検索で検出されなくなります。このようなユースケースをサポートする必要がある場合は、このメソッドよりも getMergedRepeatableAnnotations(AnnotatedElement, Class) を優先するか、複数の反復可能なアノテーション型をサポートするように構成された RepeatableContainers と組み合わせて MergedAnnotations API を直接使用してください。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationType - 検索するアノテーション型 (非 null)
      containerType - アノテーションを保持するコンテナーの型。コンテナー型を RepeatableSE でルックアップする必要がある場合は、null の場合があります
      戻り値:
      見つかったすべてのマージされた繰り返し可能な Annotations のセット、または何も見つからなかった場合は空のセット
      例外:
      IllegalArgumentExceptionSE - element または annotationType が null である場合、またはコンテナー型を解決できない場合
      AnnotationConfigurationException - 指定された containerType が指定された annotationType の有効なコンテナーアノテーションでない場合
      導入:
      4.3
      関連事項:
    • getAllAnnotationAttributes

      @Nullable public static MultiValueMap<StringSE,ObjectSE> getAllAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName)
      指定された AnnotatedElementSE の上のアノテーション階層にある指定された annotationName のすべてのアノテーションのアノテーション属性を取得し、結果を MultiValueMap に保存します。

      メモ: getMergedAnnotationAttributes(AnnotatedElement, String) とは異なり、このメソッドは属性のオーバーライドをサポートしていませ

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationName - 検索するアノテーション型の完全修飾クラス名
      戻り値:
      見つかったすべてのアノテーションからのアノテーション属性を含む、属性名をキーとする MultiValueMap、見つからない場合は null 
      関連事項:
    • getAllAnnotationAttributes

      @Nullable public static MultiValueMap<StringSE,ObjectSE> getAllAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
      指定された AnnotatedElementSE の上のアノテーション階層にある指定された annotationName のすべてのアノテーションのアノテーション属性を取得し、結果を MultiValueMap に保存します。

      メモ: getMergedAnnotationAttributes(AnnotatedElement, String) とは異なり、このメソッドは属性のオーバーライドをサポートしていませ

      このメソッドは、クラスレベルの javadoc で説明されている get セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationName - 検索するアノテーション型の完全修飾クラス名
      classValuesAsString - クラス参照を文字列に変換するか、クラス参照として保持するか
      nestedAnnotationsAsMap - ネストされた Annotation インスタンスを AnnotationAttributes マップに変換するか、Annotation インスタンスとして保持するか
      戻り値:
      見つかったすべてのアノテーションからのアノテーション属性を含む、属性名をキーとする MultiValueMap、見つからない場合は null 
    • hasAnnotation

      public static boolean hasAnnotation(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType)
      指定された annotationType のアノテーションが、提供された AnnotatedElementSE で、指定された要素ののアノテーション階層内で使用可能かどうかを判別します。

      このメソッドが true を返す場合、findMergedAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>, boolean, boolean) は null 以外の値を返します。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationType - 検索するアノテーション型
      戻り値:
      一致するアノテーションが存在する場合は true 
      導入:
      4.3
      関連事項:
    • findMergedAnnotationAttributes

      @Nullable public static AnnotationAttributes findMergedAnnotationAttributes(AnnotatedElementSE element, ClassSE<? extends AnnotationSE> annotationType, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
      指定された element ののアノテーション階層内で指定された annotationType の最初のアノテーションを検索し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。

      アノテーション階層の下位レベルの属性は、上位レベルの同じ名前の属性をオーバーライドし、@AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされます。

      getAllAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.String) とは異なり、このメソッドで使用される検索アルゴリズムは、指定された annotationType の最初のアノテーションが見つかると、アノテーション階層の検索を停止します。結果として、指定された annotationType の追加のアノテーションは無視されます。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationType - 検索するアノテーション型
      classValuesAsString - クラス参照を文字列に変換するか、クラス参照として保持するか
      nestedAnnotationsAsMap - ネストされた Annotation インスタンスを AnnotationAttributes マップに変換するか、Annotation インスタンスとして保持するか
      戻り値:
      マージされた AnnotationAttributes、または見つからない場合は null 
      導入:
      4.2
      関連事項:
    • findMergedAnnotationAttributes

      @Nullable public static AnnotationAttributes findMergedAnnotationAttributes(AnnotatedElementSE element, StringSE annotationName, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
      指定された element ののアノテーション階層内で指定された annotationName の最初のアノテーションを検索し、そのアノテーションの属性を、アノテーション階層の下位レベルのアノテーションの一致する属性とマージします。

      アノテーション階層の下位レベルの属性は、上位レベルの同じ名前の属性をオーバーライドし、@AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされます。

      getAllAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.String) とは異なり、このメソッドで使用される検索アルゴリズムは、指定された annotationName の最初のアノテーションが見つかると、アノテーション階層の検索を停止します。結果として、指定された annotationName の追加のアノテーションは無視されます。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationName - 検索するアノテーション型の完全修飾クラス名
      classValuesAsString - クラス参照を文字列に変換するか、クラス参照として保持するか
      nestedAnnotationsAsMap - ネストされた Annotation インスタンスを AnnotationAttributes マップに変換するか、Annotation インスタンスとして保持するか
      戻り値:
      マージされた AnnotationAttributes、または見つからない場合は null 
      導入:
      4.2
      関連事項:
    • findMergedAnnotation

      @Nullable public static <A extends AnnotationSE> A findMergedAnnotation(AnnotatedElementSE element, ClassSE<A> annotationType)
      指定された elementのアノテーション階層内で指定された annotationType の最初のアノテーションを見つけ、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションからの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素
      annotationType - 検索するアノテーション型
      戻り値:
      マージ、合成された Annotation、見つからない場合は null 
      導入:
      4.2
      関連事項:
    • findAllMergedAnnotations

      public static <A extends AnnotationSE> SetSE<A> findAllMergedAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType)
      指定された elementのアノテーション階層内で、指定された annotationType のすべてのアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationType - 検索するアノテーション型 (非 null)
      戻り値:
      マージされ、合成されたすべての Annotations のセットが見つかりました。見つからなかった場合は空のセット
      導入:
      4.3
      関連事項:
    • findAllMergedAnnotations

      public static SetSE<AnnotationSE> findAllMergedAnnotations(AnnotatedElementSE element, SetSE<ClassSE<? extends AnnotationSE>> annotationTypes)
      指定された elementのアノテーション階層内で、指定された annotationTypes のすべてのアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を対応する annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationTypes - 検索するアノテーション型
      戻り値:
      マージされ、合成されたすべての Annotations のセットが見つかりました。見つからなかった場合は空のセット
      導入:
      5.1
      関連事項:
    • findMergedRepeatableAnnotations

      public static <A extends AnnotationSE> SetSE<A> findMergedRepeatableAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType)
      指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      繰り返し可能なアノテーションを保持するコンテナー型は、RepeatableSE を介して検索されます。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationType - 検索するアノテーション型 (非 null)
      戻り値:
      見つかったすべてのマージされた繰り返し可能な Annotations のセット、または何も見つからなかった場合は空のセット
      例外:
      IllegalArgumentExceptionSE - element または annotationType が null である場合、またはコンテナー型を解決できない場合
      導入:
      4.3
      関連事項:
    • findMergedRepeatableAnnotations

      public static <A extends AnnotationSE> SetSE<A> findMergedRepeatableAnnotations(AnnotatedElementSE element, ClassSE<A> annotationType, @Nullable ClassSE<? extends AnnotationSE> containerType)
      指定された elementのアノテーション階層内で、指定された annotationType のすべての繰り返し可能なアノテーションを検索します。見つかった各アノテーションについて、そのアノテーションの属性をアノテーション階層の下位レベルのアノテーションの一致する属性とマージし、結果を指定された annotationType のアノテーションに合成します。

      @AliasFor セマンティクスは、単一のアノテーション内とアノテーション階層内の両方で完全にサポートされています。

      このメソッドは、クラスレベルの javadoc で説明されている検索セマンティクスに従います。

      警告 : 提供された containerType が null でない場合、検索は、コンテナーが提供された containerType である反復可能なアノテーションのみをサポートするように制限されます。これにより、他の型の繰り返し可能なアノテーションでメタアノテーションとして宣言された繰り返し可能なアノテーションが検索で検出されなくなります。このようなユースケースをサポートする必要がある場合は、このメソッドよりも findMergedRepeatableAnnotations(AnnotatedElement, Class) を優先するか、複数の反復可能なアノテーション型をサポートするように構成された RepeatableContainers と組み合わせて MergedAnnotations API を直接使用してください。

      パラメーター:
      element - アノテーション付き要素 (非 null)
      annotationType - 検索するアノテーション型 (非 null)
      containerType - アノテーションを保持するコンテナーの型。コンテナー型を RepeatableSE でルックアップする必要がある場合は、null の場合があります
      戻り値:
      見つかったすべてのマージされた繰り返し可能な Annotations のセット、または何も見つからなかった場合は空のセット
      例外:
      IllegalArgumentExceptionSE - element または annotationType が null である場合、またはコンテナー型を解決できない場合
      AnnotationConfigurationException - 指定された containerType が指定された annotationType の有効なコンテナーアノテーションでない場合
      導入:
      4.3
      関連事項: