Rumah >Java >javaTutorial >Bolehkah Nilai Anotasi Dibaca dalam Kelas Berbeza pada Runtime di 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!