注釈値の動的提供
提供されたコード スニペットは、注釈属性の値を動的に生成することを目的としています。ただし、発生したエラーは、注釈値が定数式である必要があることを示しており、Java の注釈処理の制限を強調しています。
この例では、注釈 @MyInterface が属性 aString で定義されています。この属性の値は、generateName メソッドを使用して動的に生成されることを目的としています。ただし、Java では、アノテーション属性値が定数式である必要があります。つまり、コンパイル時に既知である必要があります。 GENERIC_GENERATED_NAME は実行時に生成されるため、この要件に違反します。
Java では、この制限を回避する簡単な方法はありません。コンパイラーはコンパイル時に RetentionPolicy.RUNTIME 注釈の注釈メタデータを評価します。生成された値は実行時まで使用できません。同様に、RetentionPolicy.SOURCE のアノテーションはコンパイル後に破棄され、生成された値にアクセスできなくなります。
したがって、Java でアノテーション属性の値を動的に生成することはできません。すべてのアノテーション属性値は既知であり、コンパイル時に解決可能である必要があります。
以上がJava アノテーションに値を動的に提供できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。