ホームページ  >  記事  >  Java  >  Java の実行時に注釈値を別のクラスで読み取ることはできますか?

Java の実行時に注釈値を別のクラスで読み取ることはできますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 06:15:02674ブラウズ

Can Annotation Values Be Read in a Different Class at Runtime in Java?

Java でのアノテーション値の取得

Java アノテーションは、コード要素に関するメタデータを提供する便利な方法を提供します。特定のシナリオでは、実行時にこれらのアノテーションの値にアクセスする必要がある場合があります。特に次のような疑問が生じます:

ランタイム保持を持つアノテーションは Java の別のクラスで読み取ることができますか?

アノテーションに次のアノテーションが付けられている場合、答えは「はい」です。 @Retention(RetentionPolicy.RUNTIME)。これは、アノテーションがコンパイルを超えて実行時に利用可能である必要があることを示しています。

次のコード スニペットを考えてみましょう:

<code class="java">@Column(columnName="firstname")
private String firstName;

@Column(columnName="lastname")
private String lastName;</code>

別のクラスでアノテーション値を取得するには、リフレクションを使用できます。

<code class="java">for (Field f : MyClass.class.getFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}</code>

プライベート フィールドにアクセスする必要がある場合は、getDeclaredFields():

<code class="java">for (Field f : MyClass.class.getDeclaredFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}</code>

このコードは MyClass のフィールドをループし、各フィールドの @Column アノテーションをチェックします。注釈が見つかった場合は、columnName 属性の値を出力します。

以上がJava の実行時に注釈値を別のクラスで読み取ることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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