首頁  >  文章  >  Java  >  如何在 Java 中存取不同類別中的註解值?

如何在 Java 中存取不同類別中的註解值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-26 21:34:03114瀏覽

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

在 Java 中存取註解值

註解是 Java 中向類別、方法和欄位添加元資料的強大機制。可以在執行時間存取和使用這些註解來修改註解程式碼的行為。出現的一個常見問題是是否可以讀取不同類別中註釋的值。

這個問題的答案是肯定的,但這取決於註解的保留策略。註解可以有以下三種保留策略之一:

  • 來源:註解被編譯器丟棄,並且在執行時不可用。
  • 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());
    }
}

注意,要存取私有字段,需要使用getDeclaredFields() 方法而不是getFields():

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

以上是如何在 Java 中存取不同類別中的註解值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn