Java の別のクラスのアノテーション値にアクセスするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-26 21:34:03
オリジナル
114 人が閲覧しました

How Can I Access Annotation Values in a Different Class in Java?

Java でのアノテーション値へのアクセス

アノテーションは、クラス、メソッド、およびフィールドにメタデータを追加するための Java の強力なメカニズムです。これらのアノテーションは、実行時にアクセスして使用して、アノテーション付きコードの動作を変更できます。よく発生する質問の 1 つは、別のクラスでアノテーションの値を読み取ることができるかどうかです。

この質問に対する答えは「はい」ですが、それはアノテーションの保持ポリシーによって異なります。注釈には、次の 3 つの保持ポリシーのいずれかを設定できます。

  • SOURCE: 注釈はコンパイラによって破棄され、実行時には使用できません。
  • CLASS: 注釈はクラス ファイルに保持されますが、実行時にリフレクション経由で使用できません。
  • RUNTIME: 注釈はクラス ファイルに保持され、実行時にリフレクション経由で使用できます。
  • >

別のクラスのアノテーションの値を読み取るには、アノテーションにランタイム保持ポリシーが必要です。実行時保持ポリシーを指定するには、@Retention アノテーションの後に RetentionPolicy 列挙型を使用します:

@Retention(RetentionPolicy.RUNTIME)
@interface Column {
    String columnName();
}
ログイン後にコピー

アノテーションに実行時保持ポリシーがあると、リフレクションを使用して別のクラスのその値にアクセスできます:

for (Field f : MyClass.class.getFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}
ログイン後にコピー

プライベートフィールドにアクセスするには、getFields():

for (Field f : MyClass.class.getDeclaredFields()) {
    Column column = f.getAnnotation(Column.class);
    if (column != null) {
        System.out.println(column.columnName());
    }
}
ログイン後にコピー
の代わりに getDeclaredFields() メソッドを使用する必要があることに注意してください。

以上がJava の別のクラスのアノテーション値にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!