Rumah >Java >javaTutorial >Bolehkah Nilai Anotasi Dibaca dalam Kelas Berbeza pada Runtime di Java?

Bolehkah Nilai Anotasi Dibaca dalam Kelas Berbeza pada Runtime di Java?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 06:15:02756semak imbas

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

Mendapatkan Nilai Anotasi dalam Java

Anotasi Java menawarkan cara yang mudah untuk menyediakan metadata tentang elemen kod. Dalam senario tertentu, anda mungkin perlu mengakses nilai anotasi ini semasa masa jalan. Terutamanya, persoalan timbul:

Bolehkah anotasi dengan pengekalan masa jalan dibaca dalam kelas lain di Java?

Jawapannya ya, dengan syarat anotasi itu dianotasi dengan @Retention(RetentionPolicy.RUNTIME). Ini menunjukkan bahawa anotasi harus tersedia pada masa jalan, di luar penyusunan.

Pertimbangkan coretan kod berikut:

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

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

Untuk mendapatkan semula nilai anotasi dalam kelas lain, anda boleh menggunakan refleksi:

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

Jika anda perlu mengakses medan peribadi, anda boleh menggunakan 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>

Kod ini bergelung melalui medan MyClass, menyemak anotasi @Column pada setiap medan. Jika anotasi ditemui, ia mencetak nilai atribut columnName.

Atas ialah kandungan terperinci Bolehkah Nilai Anotasi Dibaca dalam Kelas Berbeza pada Runtime di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn