最初の試行と問題
Java では、アノテーションを使用してメタデータを提供しますクラス、メソッド、変数。シナリオによっては、注釈属性に動的な値を割り当てたい場合があります。ただし、メソッド呼び出しの結果などの非定数式をアノテーション属性に割り当てることは、一般に禁止されています。あなたが経験したように:
@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
コンパイラは次のように警告します:
「注釈属性 MyInterface.aString の値は定数式である必要があります」
コンパイラの制限
この制限は、コンパイラによるコンパイル時の RetentionPolicy.RUNTIME アノテーションのアノテーション メタデータの評価に起因します。注釈属性に割り当てられる値は、コンパイル時に認識されている必要があります。
さまざまな保持ポリシー
Java は、注釈に対してさまざまな保持ポリシーを提供します。
解決
残念ながら、動的に生成された文字列値をアノテーションに提供するという目標を達成することは、コンパイラーの制限により不可能です。 RetentionPolicy.SOURCE も RetentionPolicy.RUNTIME もこれを許可しません。
以上がJava アノテーションに動的値を渡すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。