Mengakses Nilai Anotasi dalam Java
Anotasi ialah mekanisme berkuasa dalam Java untuk menambahkan metadata pada kelas, kaedah dan medan. Anotasi ini boleh diakses dan digunakan pada masa jalan untuk mengubah suai tingkah laku kod beranotasi. Satu soalan biasa yang timbul ialah sama ada nilai anotasi boleh dibaca dalam kelas yang berbeza.
Jawapan kepada soalan ini ialah ya, tetapi ia bergantung pada dasar pengekalan anotasi. Anotasi boleh mempunyai salah satu daripada tiga dasar pengekalan:
Untuk membaca nilai anotasi dalam kelas yang berbeza, anotasi mesti mempunyai dasar pengekalan masa jalan. Untuk menentukan dasar pengekalan masa jalan, gunakan anotasi @Retention diikuti dengan enum RetentionPolicy:
@Retention(RetentionPolicy.RUNTIME) @interface Column { String columnName(); }
Setelah anotasi mempunyai dasar pengekalan masa jalan, anda boleh menggunakan refleksi untuk mengakses nilainya dalam kelas lain:
for (Field f : MyClass.class.getFields()) { Column column = f.getAnnotation(Column.class); if (column != null) { System.out.println(column.columnName()); } }
Perhatikan bahawa untuk mengakses medan peribadi, anda perlu menggunakan kaedah getDeclaredFields() dan bukannya getFields():
for (Field f : MyClass.class.getDeclaredFields()) { Column column = f.getAnnotation(Column.class); if (column != null) { System.out.println(column.columnName()); } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Nilai Anotasi dalam Kelas Berbeza di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!