クラス AnnotationUtils

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

public abstract class AnnotationUtils extends ObjectSE
アノテーションの操作、メタアノテーションの処理、ブリッジメソッド(コンパイラーがジェネリクス宣言用に生成)、およびスーパーメソッド(オプションのアノテーション継承)を処理するための一般的なユーティリティメソッド。

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

ランタイムが保持するアプリケーションアノテーション(トランザクション制御、認可、サービス公開など)の一般的なルールとして、JDK のプレーンアノテーションルックアップメソッドではなく、常にこのクラスのルックアップメソッド(findAnnotation(Method, Class) または getAnnotation(Method, Class) など)を使用します。指定されたクラスレベルのみの取得ルックアップ(getAnnotation(Method, Class))と指定されたメソッドの継承階層全体の検索ルックアップ(findAnnotation(Method, Class))のどちらかを明示的に選択することもできます。

用語

直接存在する間接的に存在する、および存在 するという用語は、AnnotatedElementSE(Java 8 内)のクラスレベルの javadoc で定義されているのと同じ意味を持っています。

アノテーションが要素上に存在するいくつかの他のアノテーションのメタアノテーションとして宣言されている場合、アノテーションは、要素上でメタ存在します。A は、他のアノテーションに直接存在またはメタ存在する場合アノテーション A は別のアノテーションにメタ存在しています。

メタアノテーションサポート

このクラスのほとんどの find*() メソッドおよび一部の get*() メソッドは、メタアノテーションとして使用されるアノテーションを検索するためのサポートを提供します。詳細については、このクラスの各メソッドの javadoc を参照してください。構成されたアノテーション属性オーバーライドを使用したメタアノテーションをきめ細かくサポートするには、代わりに AnnotatedElementUtils のより具象メソッドを使用することを検討してください。

属性エイリアス

アノテーション、アノテーションの配列、AnnotationAttributes を返すこのクラスのすべての public メソッドは、@AliasFor を介して構成された属性エイリアスを透過的にサポートします。詳細については、さまざまな synthesizeAnnotation*(..) メソッドを参照してください。

検索の範囲

このクラスのメソッドで使用される検索アルゴリズムは、指定された型の最初のアノテーションが見つかると、アノテーションの検索を停止します。結果として、指定された型の追加のアノテーションは通知なく無視されます。

導入:
2.0
作成者:
Rob Harrop, Juergen Hoeller, Sam Brannen, Mark Fisher, Chris Beams, Phillip Webb, Oleg Zhurakousky
関連事項:
  • フィールドの詳細

  • コンストラクターの詳細

    • AnnotationUtils

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

    • isCandidateClass

      public static boolean isCandidateClass(ClassSE<?> clazz, CollectionSE<ClassSE<? extends AnnotationSE>> annotationTypes)
      指定されたクラスが、(型、メソッド、フィールドレベルで)指定されたアノテーションの 1 つを運ぶ候補であるかどうかを判断します。
      パラメーター:
      clazz - 内省するクラス
      annotationTypes - 検索可能なアノテーション型
      戻り値:
      false (クラスにそのようなアノテーションがどのレベルにもないことがわかっている場合)。それ以外の場合は true。ここで true が返される場合、呼び出し元は通常、完全なメソッド / フィールドイントロスペクションを実行します。
      導入:
      5.2
      関連事項:
    • isCandidateClass

      public static boolean isCandidateClass(ClassSE<?> clazz, @Nullable ClassSE<? extends AnnotationSE> annotationType)
      指定されたクラスが、指定されたアノテーション(型、メソッド、フィールドレベル)を運ぶ候補であるかどうかを判断します。
      パラメーター:
      clazz - 内省するクラス
      annotationType - 検索可能なアノテーション型
      戻り値:
      false (クラスにそのようなアノテーションがどのレベルにもないことがわかっている場合)。それ以外の場合は true。ここで true が返される場合、呼び出し元は通常、完全なメソッド / フィールドイントロスペクションを実行します。
      導入:
      5.2
      関連事項:
    • isCandidateClass

      public static boolean isCandidateClass(ClassSE<?> clazz, StringSE annotationName)
      指定されたクラスが、指定されたアノテーション(型、メソッド、フィールドレベル)を運ぶ候補であるかどうかを判断します。
      パラメーター:
      clazz - 内省するクラス
      annotationName - 検索可能なアノテーション型の完全修飾名
      戻り値:
      false (クラスにそのようなアノテーションがどのレベルにもないことがわかっている場合)。それ以外の場合は true。ここで true が返される場合、呼び出し元は通常、完全なメソッド / フィールドイントロスペクションを実行します。
      導入:
      5.2
      関連事項:
    • getAnnotation

      @Nullable public static <A extends AnnotationSE> A getAnnotation(AnnotationSE annotation, ClassSE<A> annotationType)
      提供されたアノテーションから annotationType の単一の AnnotationSE を取得します: 指定されたアノテーション自体またはその直接メタアノテーションのいずれか。

      このメソッドは、単一レベルのメタアノテーションのみをサポートすることに注意してください。任意のレベルのメタアノテーションをサポートするには、代わりに find*() メソッドの 1 つを使用してください。

      パラメーター:
      annotation - チェックするアノテーション
      annotationType - ローカルおよびメタアノテーションとして検索するアノテーション型
      戻り値:
      最初に一致したアノテーション。見つからない場合は null 
      導入:
      4.0
    • getAnnotation

      @Nullable public static <A extends AnnotationSE> A getAnnotation(AnnotatedElementSE annotatedElement, ClassSE<A> annotationType)
      指定された AnnotatedElementSE から annotationType の単一の AnnotationSE を取得します。ここで、アノテーションは AnnotatedElement存在するメタ存在します。

      このメソッドは、単一レベルのメタアノテーションのみをサポートすることに注意してください。メタアノテーションの任意のレベルをサポートするには、代わりに findAnnotation(AnnotatedElement, Class) を使用してください。

      パラメーター:
      annotatedElement - アノテーションを取得する AnnotatedElement 
      annotationType - ローカルおよびメタアノテーションとして検索するアノテーション型
      戻り値:
      最初に一致したアノテーション。見つからない場合は null 
      導入:
      3.1
    • getAnnotation

      @Nullable public static <A extends AnnotationSE> A getAnnotation(MethodSE method, ClassSE<A> annotationType)
      提供されている MethodSE から annotationType の単一の AnnotationSE を取得します。ここで、アノテーションはメソッドに存在するか、メタに存在します。

      コンパイラーによって生成されたブリッジ MethodsSE を正しく処理します。

      このメソッドは、単一レベルのメタアノテーションのみをサポートすることに注意してください。メタアノテーションの任意のレベルをサポートするには、代わりに findAnnotation(Method, Class) を使用してください。

      パラメーター:
      method - アノテーションを探すメソッド
      annotationType - 検索するアノテーション型
      戻り値:
      最初に一致したアノテーション。見つからない場合は null 
      関連事項:
    • getAnnotations

      @DeprecatedSE @Nullable public static AnnotationSE[] getAnnotations(AnnotatedElementSE annotatedElement)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      提供された AnnotatedElementSE存在するすべての AnnotationsSE を取得します。

      メタアノテーションは検索されません。

      パラメーター:
      annotatedElement - アノテーションを取得するメソッド、コンストラクター、フィールド
      戻り値:
      見つかったアノテーション、空の配列、解決できない場合は null (たとえばアノテーション属性のネストされたクラス値が実行時に解決されなかったため)
      導入:
      4.0.8
      関連事項:
    • getAnnotations

      @DeprecatedSE @Nullable public static AnnotationSE[] getAnnotations(MethodSE method)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      提供された MethodSE存在するすべての AnnotationsSE を取得します。

      コンパイラーによって生成されたブリッジ MethodsSE を正しく処理します。

      メタアノテーションは検索されません。

      パラメーター:
      method - アノテーションを取得するメソッド
      戻り値:
      見つかったアノテーション、空の配列、解決できない場合は null (たとえばアノテーション属性のネストされたクラス値が実行時に解決されなかったため)
      関連事項:
    • getRepeatableAnnotations

      @DeprecatedSE public static <A extends AnnotationSE> SetSE<A> getRepeatableAnnotations(AnnotatedElementSE annotatedElement, ClassSE<A> annotationType)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      提供された AnnotatedElementSE から annotationType の繰り返し可能アノテーションSEを取得します。このようなアノテーションは、要素に存在するか、間接的に存在するか、メタに存在します。

      このメソッドは、Java 8 の AnnotatedElement.getAnnotationsByType(Class)SE の機能を模倣し、@RepeatableSE(Java 8 以降で実行されている場合)を介して宣言されたコンテナーアノテーションの自動検出をサポートし、メタアノテーションを追加サポートします。

      単一のアノテーションとコンテナーアノテーション内にネストされたアノテーションの両方を処理します。

      指定された要素が MethodSE である場合、コンパイラーによって生成されたブリッジメソッドを正しく処理します。

      提供された要素にアノテーションが存在しない場合、メタアノテーションが検索されます。

      パラメーター:
      annotatedElement - アノテーションを探す要素
      annotationType - 検索するアノテーション型
      戻り値:
      見つかったアノテーションまたは空のセット (非 null)
      導入:
      4.2
      関連事項:
    • getRepeatableAnnotations

      @DeprecatedSE public static <A extends AnnotationSE> SetSE<A> getRepeatableAnnotations(AnnotatedElementSE annotatedElement, ClassSE<A> annotationType, @Nullable ClassSE<? extends AnnotationSE> containerAnnotationType)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      提供された AnnotatedElementSE から annotationType の繰り返し可能アノテーションSEを取得します。このようなアノテーションは、要素に存在するか、間接的に存在するか、メタに存在します。

      このメソッドは、メタアノテーションの追加サポートにより、Java 8 の AnnotatedElement.getAnnotationsByType(Class)SE の機能を模倣します。

      単一のアノテーションとコンテナーアノテーション内にネストされたアノテーションの両方を処理します。

      指定された要素が MethodSE である場合、コンパイラーによって生成されたブリッジメソッドを正しく処理します。

      提供された要素にアノテーションが存在しない場合、メタアノテーションが検索されます。

      パラメーター:
      annotatedElement - アノテーションを探す要素
      annotationType - 検索するアノテーション型
      containerAnnotationType - アノテーションを保持するコンテナーの型。コンテナーがサポートされていない場合、または Java 8 以上で実行するときに @RepeatableSE を介して検索する必要がある場合は、null になる可能性があります。
      戻り値:
      見つかったアノテーションまたは空のセット (非 null)
      導入:
      4.2
      関連事項:
    • getDeclaredRepeatableAnnotations

      @DeprecatedSE public static <A extends AnnotationSE> SetSE<A> getDeclaredRepeatableAnnotations(AnnotatedElementSE annotatedElement, ClassSE<A> annotationType)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      提供された AnnotatedElementSE から annotationType の宣言された繰り返し可能な アノテーションSEを取得します。このようなアノテーションは、要素に直接存在するか、間接的に存在するか、メタ存在です。

      このメソッドは、Java 8 の AnnotatedElement.getDeclaredAnnotationsByType(Class)SE の機能を模倣し、@RepeatableSE(Java 8 以降で実行されている場合)を介して宣言されたコンテナーアノテーションの自動検出をサポートし、メタアノテーションを追加サポートします。

      単一のアノテーションとコンテナーアノテーション内にネストされたアノテーションの両方を処理します。

      指定された要素が MethodSE である場合、コンパイラーによって生成されたブリッジメソッドを正しく処理します。

      提供された要素にアノテーションが存在しない場合、メタアノテーションが検索されます。

      パラメーター:
      annotatedElement - アノテーションを探す要素
      annotationType - 検索するアノテーション型
      戻り値:
      見つかったアノテーションまたは空のセット (非 null)
      導入:
      4.2
      関連事項:
    • getDeclaredRepeatableAnnotations

      @DeprecatedSE public static <A extends AnnotationSE> SetSE<A> getDeclaredRepeatableAnnotations(AnnotatedElementSE annotatedElement, ClassSE<A> annotationType, @Nullable ClassSE<? extends AnnotationSE> containerAnnotationType)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      提供された AnnotatedElementSE から annotationType の宣言された繰り返し可能な アノテーションSEを取得します。このようなアノテーションは、要素に直接存在するか、間接的に存在するか、メタ存在です。

      このメソッドは、メタアノテーションの追加サポートにより、Java 8 の AnnotatedElement.getDeclaredAnnotationsByType(Class)SE の機能を模倣します。

      単一のアノテーションとコンテナーアノテーション内にネストされたアノテーションの両方を処理します。

      指定された要素が MethodSE である場合、コンパイラーによって生成されたブリッジメソッドを正しく処理します。

      提供された要素にアノテーションが存在しない場合、メタアノテーションが検索されます。

      パラメーター:
      annotatedElement - アノテーションを探す要素
      annotationType - 検索するアノテーション型
      containerAnnotationType - アノテーションを保持するコンテナーの型。コンテナーがサポートされていない場合、または Java 8 以上で実行するときに @RepeatableSE を介して検索する必要がある場合は、null になる可能性があります。
      戻り値:
      見つかったアノテーションまたは空のセット (非 null)
      導入:
      4.2
      関連事項:
    • findAnnotation

      @Nullable public static <A extends AnnotationSE> A findAnnotation(AnnotatedElementSE annotatedElement, @Nullable ClassSE<A> annotationType)
      提供されている AnnotatedElementSE で annotationType の単一の AnnotationSE を見つけます。

      指定された要素にアノテーションが直接存在しない場合、メタアノテーションが検索されます。

      警告 : このメソッドは、アノテーション付きの要素に対して一般的に機能します。つまり、このメソッドは、クラスまたはメソッドの特殊な検索アルゴリズムを実行しません。findAnnotation(Class, Class) または findAnnotation(Method, Class) のより具体的なセマンティクスが必要な場合は、代わりにそれらのメソッドの 1 つを呼び出します。

      パラメーター:
      annotatedElement - アノテーションを検索する AnnotatedElement 
      annotationType - ローカルおよびメタアノテーションとして検索するアノテーション型
      戻り値:
      最初に一致したアノテーション。見つからない場合は null 
      導入:
      4.2
    • findAnnotation

      @Nullable public static <A extends AnnotationSE> A findAnnotation(MethodSE method, @Nullable ClassSE<A> annotationType)
      提供された MethodSE で annotationType の単一の AnnotationSE を見つけ、アノテーションが特定のメソッド自体に直接存在しない場合は、そのスーパーメソッドを(つまり、スーパークラスとインターフェースから)トラバースします。

      コンパイラーによって生成されたブリッジ MethodsSE を正しく処理します。

      メソッドにアノテーションが直接存在しない場合は、メタアノテーションが検索されます。

      メソッドのアノテーションはデフォルトでは継承されないため、これを明示的に処理する必要があります。

      パラメーター:
      method - アノテーションを探すメソッド
      annotationType - 検索するアノテーション型
      戻り値:
      最初に一致したアノテーション。見つからない場合は null 
      関連事項:
    • findAnnotation

      @Nullable public static <A extends AnnotationSE> A findAnnotation(ClassSE<?> clazz, @Nullable ClassSE<A> annotationType)
      提供された ClassSE で annotationType の単一の AnnotationSE を検索し、そのインターフェース、アノテーション、スーパークラスをトラバースします(アノテーションが特定のクラス自体に直接存在しない場合)。

      このメソッドは、inheritedSE として宣言されていないクラスレベルのアノテーション、およびメタアノテーションとインターフェースのアノテーションを明示的に処理します

      アルゴリズムは次のように動作します。

      1. 指定されたクラスのアノテーションを検索し、見つかった場合はそれを返します。
      2. 指定されたクラスが宣言するすべてのアノテーションを再帰的に検索します。
      3. 指定されたクラスが宣言するすべてのインターフェースを再帰的に検索します。
      4. 指定されたクラスのスーパークラス階層を再帰的に検索します。

      メモ: この文脈では、用語は再帰的に、現在のインターフェース、アノテーション、スーパークラスをアノテーションとして検索するクラスとしてステップ 1 に戻ることにより、検索プロセスが続行することを意味します。

      パラメーター:
      clazz - アノテーションを探すクラス
      annotationType - 検索するアノテーションの型
      戻り値:
      最初に一致したアノテーション。見つからない場合は null 
    • findAnnotationDeclaringClass

      @DeprecatedSE @Nullable public static ClassSE<?> findAnnotationDeclaringClass(ClassSE<? extends AnnotationSE> annotationType, @Nullable ClassSE<?> clazz)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      指定された annotationType のアノテーションが直接存在する指定された clazz (指定された clazz 自体を含む)の継承階層の最初の ClassSE を見つけます。

      提供された clazz がインターフェースの場合、インターフェース自体のみがチェックされます。インターフェースの継承階層はトラバースされません。

      メタアノテーションは検索されません。

      標準の ClassSE API は、継承階層のどのクラスが実際に AnnotationSE を宣言するかを決定するメカニズムを提供しないため、これを明示的に処理する必要があります。

      パラメーター:
      annotationType - 検索するアノテーション型
      clazz - アノテーションを確認するクラス (null の場合があります)
      戻り値:
      指定された annotationType または見つからない場合は null のアノテーションを宣言する継承階層の最初の ClassSE
      関連事項:
    • findAnnotationDeclaringClassForTypes

      @DeprecatedSE @Nullable public static ClassSE<?> findAnnotationDeclaringClassForTypes(ListSE<ClassSE<? extends AnnotationSE>> annotationTypes, @Nullable ClassSE<?> clazz)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      指定された annotationTypes の少なくとも 1 つが直接存在する指定された clazz (指定された clazz 自体を含む)の継承階層の最初の ClassSE を見つけます。

      提供された clazz がインターフェースの場合、インターフェース自体のみがチェックされます。インターフェースの継承階層はトラバースされません。

      メタアノテーションは検索されません。

      標準の ClassSE API は、継承階層内のどのクラスが実際にいくつかの候補アノテーションSEの 1 つを宣言するかを決定するメカニズムを提供しないため、これを明示的に処理する必要があります。

      パラメーター:
      annotationTypes - 検索するアノテーション型
      clazz - アノテーションを確認するクラス (null の場合があります)
      戻り値:
      指定された annotationTypes または見つからない場合は null の少なくとも 1 つのアノテーションを宣言する継承階層の最初の ClassSE
      導入:
      3.2.2
      関連事項:
    • isAnnotationDeclaredLocally

      public static boolean isAnnotationDeclaredLocally(ClassSE<? extends AnnotationSE> annotationType, ClassSE<?> clazz)
      指定された annotationType のアノテーションが、指定された clazz でローカルに宣言されている(つまり、直接存在している)かどうかを判断します。

      提供される ClassSE は任意の型を表すことができます。

      メタアノテーションは検索されません。

      メモ: このメソッドは、アノテーションが継承SEされているかどうかを判別しません。

      パラメーター:
      annotationType - 検索するアノテーション型
      clazz - アノテーションを確認するクラス
      戻り値:
      true (指定された annotationType のアノテーションが直接存在する場合)
      関連事項:
    • isAnnotationInherited

      @DeprecatedSE public static boolean isAnnotationInherited(ClassSE<? extends AnnotationSE> annotationType, ClassSE<?> clazz)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      指定された annotationType のアノテーションが、提供された clazz に存在し、継承されているSE(つまり、直接存在していない)かどうかを判別します。

      メタアノテーションは検索されません。

      提供された clazz がインターフェースの場合、インターフェース自体のみがチェックされます。Java の標準的なメタアノテーションセマンティクスに従って、インターフェースの継承階層はトラバースされません。アノテーションの継承の詳細については、@Inherited メタアノテーションの javadocSE を参照してください。

      パラメーター:
      annotationType - 検索するアノテーション型
      clazz - アノテーションを確認するクラス
      戻り値:
      true (指定された annotationType のアノテーションが存在し継承されている場合)
      関連事項:
    • isAnnotationMetaPresent

      @DeprecatedSE public static boolean isAnnotationMetaPresent(ClassSE<? extends AnnotationSE> annotationType, @Nullable ClassSE<? extends AnnotationSE> metaAnnotationType)
      使用すべきではありません。
      5.2 以降、MergedAnnotations API に置き換え
      型 metaAnnotationType のアノテーションが、提供された annotationTypeメタ存在するかどうかを判別します。
      パラメーター:
      annotationType - 検索するアノテーション型
      metaAnnotationType - 検索するメタアノテーションの型
      戻り値:
      true (そのようなアノテーションがメタ表示の場合)
      導入:
      4.2.1
    • isInJavaLangAnnotationPackage

      public static boolean isInJavaLangAnnotationPackage(@Nullable AnnotationSE annotation)
      提供された AnnotationSE がコア JDK java.lang.annotation パッケージで定義されているかどうかを確認します。
      パラメーター:
      annotation - チェックするアノテーション
      戻り値:
      アノテーションが java.lang.annotation パッケージにある場合は true 
    • isInJavaLangAnnotationPackage

      public static boolean isInJavaLangAnnotationPackage(@Nullable StringSE annotationType)
      指定された名前の AnnotationSE がコア JDK java.lang.annotation パッケージで定義されているかどうかを確認します。
      パラメーター:
      annotationType - チェックするアノテーション型の名前
      戻り値:
      アノテーションが java.lang.annotation パッケージにある場合は true 
      導入:
      4.2
    • validateAnnotation

      public static void validateAnnotation(AnnotationSE annotation)
      指定されたアノテーションの宣言された属性を確認します。特に、Google App Engine の Class 値 (初期の Class.getAnnotations() failure ではなく) の TypeNotPresentExceptionProxy の遅れた到着をカバーします。

      このメソッドが失敗しないということは、getAnnotationAttributes(Annotation) も (後で試行したときに) 失敗しないことを示します。

      パラメーター:
      annotation - 検証するアノテーション
      例外:
      IllegalStateExceptionSE - 宣言された Class 属性を読み取ることができなかった場合
      導入:
      4.3.15
      関連事項:
    • getAnnotationAttributes

      public static MapSE<StringSE,ObjectSE> getAnnotationAttributes(AnnotationSE annotation)
      指定されたアノテーションの属性を MapSE として取得し、すべての属性型を保持します。

      classValuesAsString および nestedAnnotationsAsMap パラメーターを false に設定して getAnnotationAttributes(Annotation, boolean, boolean) を呼び出すのと同じです。

      メモ: このメソッドは、実際に AnnotationAttributes インスタンスを返します。ただし、Map 署名はバイナリ互換性のために保存されています。

      パラメーター:
      annotation - 属性を取得するためのアノテーション
      戻り値:
      属性名をキーとして、対応する属性値を値として持つアノテーション属性のマップ (非 null)
      関連事項:
    • getAnnotationAttributes

      public static MapSE<StringSE,ObjectSE> getAnnotationAttributes(AnnotationSE annotation, boolean classValuesAsString)
      指定されたアノテーションの属性を MapSE として取得します。

      nestedAnnotationsAsMap パラメーターを false に設定して getAnnotationAttributes(Annotation, boolean, boolean) を呼び出すのと同じです。

      メモ: このメソッドは、実際に AnnotationAttributes インスタンスを返します。ただし、Map 署名はバイナリ互換性のために保存されています。

      パラメーター:
      annotation - 属性を取得するためのアノテーション
      classValuesAsString - クラス参照を文字列に変換するか(AnnotationMetadata との互換性のため)、クラス参照として保持するか
      戻り値:
      属性名をキーとして、対応する属性値を値として持つアノテーション属性のマップ (非 null)
      関連事項:
    • getAnnotationAttributes

      public static AnnotationAttributes getAnnotationAttributes(AnnotationSE annotation, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
      指定されたアノテーションの属性を AnnotationAttributes マップとして取得します。

      このメソッドは、リフレクションベースの StandardAnnotationMetadata と同等の完全に再帰的なアノテーション読み取り機能を提供します。

      パラメーター:
      annotation - 属性を取得するためのアノテーション
      classValuesAsString - クラス参照を文字列に変換するか(AnnotationMetadata との互換性のため)、クラス参照として保持するか
      nestedAnnotationsAsMap - ネストされたアノテーションを AnnotationAttributes マップに変換するか(AnnotationMetadata との互換性のため)、Annotation インスタンスとして保持するか
      戻り値:
      属性名をキーとして、対応する属性値を値として持つアノテーション属性(特殊なマップ) (非 null)
      導入:
      3.1.1
    • getAnnotationAttributes

      public static AnnotationAttributes getAnnotationAttributes(@Nullable AnnotatedElementSE annotatedElement, AnnotationSE annotation)
      指定されたアノテーションの属性を AnnotationAttributes マップとして取得します。

      classValuesAsString および nestedAnnotationsAsMap パラメーターを false に設定して getAnnotationAttributes(AnnotatedElement, Annotation, boolean, boolean) を呼び出すのと同じです。

      パラメーター:
      annotatedElement - 指定されたアノテーションでアノテーションが付けられた要素。不明な場合は null の可能性があります
      annotation - 属性を取得するためのアノテーション
      戻り値:
      属性名をキーとして、対応する属性値を値として持つアノテーション属性(特殊なマップ) (非 null)
      導入:
      4.2
      関連事項:
    • getAnnotationAttributes

      public static AnnotationAttributes getAnnotationAttributes(@Nullable AnnotatedElementSE annotatedElement, AnnotationSE annotation, boolean classValuesAsString, boolean nestedAnnotationsAsMap)
      指定されたアノテーションの属性を AnnotationAttributes マップとして取得します。

      このメソッドは、リフレクションベースの StandardAnnotationMetadata と同等の完全に再帰的なアノテーション読み取り機能を提供します。

      パラメーター:
      annotatedElement - 指定されたアノテーションでアノテーションが付けられた要素。不明な場合は null の可能性があります
      annotation - 属性を取得するためのアノテーション
      classValuesAsString - クラス参照を文字列に変換するか(AnnotationMetadata との互換性のため)、クラス参照として保持するか
      nestedAnnotationsAsMap - ネストされたアノテーションを AnnotationAttributes マップに変換するか(AnnotationMetadata との互換性のため)、Annotation インスタンスとして保持するか
      戻り値:
      属性名をキーとして、対応する属性値を値として持つアノテーション属性(特殊なマップ) (非 null)
      導入:
      4.2
    • registerDefaultValues

      public static void registerDefaultValues(AnnotationAttributes attributes)
      可能な場合は、指定された属性のアノテーションで宣言されたデフォルト値を登録します。
      パラメーター:
      attributes - 処理するアノテーション属性
      導入:
      4.3.2
    • postProcessAnnotationAttributes

      public static void postProcessAnnotationAttributes(@Nullable ObjectSE annotatedElement, @Nullable AnnotationAttributes attributes, boolean classValuesAsString)
      提供された AnnotationAttributes を後処理し、ネストされたアノテーションを Annotation インスタンスとして保持します。

      具体的には、このメソッドは、@AliasFor でアノテーションが付けられたアノテーション属性に属性エイリアスセマンティクスを適用し、デフォルト値のプレースホルダーを元のデフォルト値に置き換えます。

      パラメーター:
      annotatedElement - 指定された属性の作成元であるアノテーションまたはアノテーション階層でアノテーションが付けられた要素。不明な場合は null の可能性があります
      attributes - 後処理するアノテーション属性
      classValuesAsString - クラス参照を文字列に変換するか(AnnotationMetadata との互換性のため)、クラス参照として保持するか
      導入:
      4.3.2
      関連事項:
    • getValue

      @Nullable public static ObjectSE getValue(AnnotationSE annotation)
      アノテーションインスタンスを指定して、単一要素のアノテーションの value 属性のを取得します。
      パラメーター:
      annotation - 値を取得するアノテーションインスタンス
      戻り値:
      属性値。AnnotationConfigurationException が原因で属性値を取得できない場合を除き、見つからない場合は null。この場合、そのような例外が再スローされます。
      関連事項:
    • getValue

      @Nullable public static ObjectSE getValue(@Nullable AnnotationSE annotation, @Nullable StringSE attributeName)
      アノテーションインスタンスを指定して、名前付き属性のを取得します。
      パラメーター:
      annotation - 値を取得するアノテーションインスタンス
      attributeName - 取得する属性値の名前
      戻り値:
      属性値。AnnotationConfigurationException が原因で属性値を取得できない場合を除き、見つからない場合は null。この場合、そのような例外が再スローされます。
      関連事項:
    • getDefaultValue

      @Nullable public static ObjectSE getDefaultValue(AnnotationSE annotation)
      アノテーションインスタンスを指定して、単一要素アノテーションの value 属性のデフォルト値を取得します
      パラメーター:
      annotation - デフォルト値を取得するアノテーションインスタンス
      戻り値:
      デフォルト値。見つからない場合は null 
      関連事項:
    • getDefaultValue

      @Nullable public static ObjectSE getDefaultValue(@Nullable AnnotationSE annotation, @Nullable StringSE attributeName)
      アノテーションインスタンスを指定して、名前付き属性のデフォルト値を取得します
      パラメーター:
      annotation - デフォルト値を取得するアノテーションインスタンス
      attributeName - 取得する属性値の名前
      戻り値:
      名前付き属性のデフォルト値。見つからない場合は null 
      関連事項:
    • getDefaultValue

      @Nullable public static ObjectSE getDefaultValue(ClassSE<? extends AnnotationSE> annotationType)
      annotation typeSE を指定して、単一要素のアノテーションの value 属性のデフォルト値を取得します
      パラメーター:
      annotationType - デフォルト値を取得する必要があるアノテーション型
      戻り値:
      デフォルト値。見つからない場合は null 
      関連事項:
    • getDefaultValue

      @Nullable public static ObjectSE getDefaultValue(@Nullable ClassSE<? extends AnnotationSE> annotationType, @Nullable StringSE attributeName)
      annotation typeSE を指定して、名前付き属性のデフォルト値を取得します
      パラメーター:
      annotationType - デフォルト値を取得する必要があるアノテーション型
      attributeName - 取得する属性値の名前。
      戻り値:
      名前付き属性のデフォルト値。見つからない場合は null 
      関連事項:
    • synthesizeAnnotation

      public static <A extends AnnotationSE> A synthesizeAnnotation(A annotation, @Nullable AnnotatedElementSE annotatedElement)
      @AliasFor でアノテーションが付けられたアノテーション属性の属性別名セマンティクスを透過的に実施する動的プロキシにラップすることにより、提供された annotation からアノテーションを合成ます
      パラメーター:
      annotation - 合成するアノテーション
      annotatedElement - 指定されたアノテーションでアノテーションが付けられた要素。不明な場合は null の可能性があります
      戻り値:
      指定されたアノテーションが合成可能な場合は、合成されたアノテーション。指定されたアノテーションが null の場合は null。それ以外の場合、指定されたアノテーションは変更されません
      例外:
      AnnotationConfigurationException - @AliasFor の無効な構成が検出された場合
      導入:
      4.2
      関連事項:
    • synthesizeAnnotation

      public static <A extends AnnotationSE> A synthesizeAnnotation(ClassSE<A> annotationType)
      デフォルトの属性値からアノテーションを合成します。

      このメソッドは単に synthesizeAnnotation(Map, Class, AnnotatedElement) に委譲し、ソース属性値には空のマップを、AnnotatedElementSE には null を提供します。

      パラメーター:
      annotationType - 合成するアノテーションの型
      戻り値:
      合成されたアノテーション
      例外:
      IllegalArgumentExceptionSE - 必要な属性がない場合
      AnnotationConfigurationException - @AliasFor の無効な構成が検出された場合
      導入:
      4.2
      関連事項:
    • synthesizeAnnotation

      public static <A extends AnnotationSE> A synthesizeAnnotation(MapSE<StringSE,ObjectSE> attributes, ClassSE<A> annotationType, @Nullable AnnotatedElementSE annotatedElement)
      指定された annotationType のアノテーションを実装し、@AliasFor でアノテーションが付けられたアノテーション属性に属性エイリアスセマンティクスを透過的に適用する動的プロキシでマップをラップすることにより、提供されたアノテーション属性のマップからアノテーションを合成ます

      提供されたマップには、提供された annotationType で定義され、エイリアスが設定されていないか、デフォルト値がないすべての属性のキーと値のペアが含まれている必要があります。ネストされたマップとマップのネストされた配列は、それぞれネストされたアノテーションまたはアノテーションのネストされた配列に再帰的に合成されます。

      AnnotationAttributesMapSE の特殊な型であり、このメソッドの attributes 引数の理想的な候補であることに注意してください。

      パラメーター:
      attributes - 合成するアノテーション属性のマップ
      annotationType - 合成するアノテーションの型
      annotatedElement - 指定された属性に対応するアノテーションが付けられた要素。不明な場合は null の可能性があります
      戻り値:
      合成されたアノテーション
      例外:
      IllegalArgumentExceptionSE - 必要な属性が欠落しているか、属性の型が正しくない場合
      AnnotationConfigurationException - @AliasFor の無効な構成が検出された場合
      導入:
      4.2
      関連事項:
    • isSynthesizedAnnotation

      public static boolean isSynthesizedAnnotation(@Nullable AnnotationSE annotation)
      提供された AnnotationSE が Spring によって合成された (つまり、動的プロキシでラップされた) かどうかを判断し、属性エイリアス処理などの追加機能を使用します。
      パラメーター:
      annotation - チェックするアノテーション
      戻り値:
      true (提供されたアノテーションが合成アノテーションの場合)
      導入:
      5.3.23
    • clearCache

      public static void clearCache()
      内部アノテーションメタデータキャッシュをクリアします。
      導入:
      4.3.15