Java アノテーションは実行時に動的に生成された値を受け入れることができますか?

DDD
リリース: 2024-10-28 14:42:30
オリジナル
477 人が閲覧しました

 Can Java Annotations Accept Dynamically Generated Values at Runtime?

実行時のアノテーションの評価

Java では、アノテーションはコンパイラーまたはランタイム システムにメタデータを提供するのに役立ちます。ただし、現在進行中の疑問は、アノテーションが実行時に動的に生成される値を受け入れられるかどうかです。

以下の試みでは、@MyInterface の aString 属性の文字列値を生成しようとしています:

<code class="java">@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
public class MyClass {

    static final String GENERIC_GENERATED_NAME = MyClass.generateName(MyClass.class);

    public static final String generateName(final Class<?> c) {
        return c.getClass().getName();
    }
}</code>
ログイン後にコピー

ただし、コンパイラはこれを次のエラー メッセージで拒否します:

The value for annotation attribute MyInterface.aString must be a constant expression
ログイン後にコピー

これは、注釈はコンパイル時に評価されますが、GENERIC_GENERATED_NAME は実行時まで不明であるためです。

目的の効果を達成するには、コンパイル時にgenerateNameメソッドを評価できるアノテーションプロセッサを作成する必要があります。ただし、Java では実行時にコードを動的に評価する機能がサポートされていないため、このソリューションには制限があります。

以上がJava アノテーションは実行時に動的に生成された値を受け入れることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート