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

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

DDD
DDDオリジナル
2024-10-28 14:42:30406ブラウズ

 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。