Rumah > Java > javaTutorial > teks badan

Bagaimanakah Saya Boleh Mengakses Nilai Anotasi dalam Kelas Berbeza di Java?

Mary-Kate Olsen
Lepaskan: 2024-10-26 21:34:03
asal
181 orang telah melayarinya

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

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:

  • SUMBER: Anotasi dibuang oleh pengkompil dan tidak tersedia pada masa jalan.
  • KELAS: Anotasi dikekalkan dalam fail kelas tetapi tidak tersedia semasa runtime melalui refleksi.
  • RUNTIME: Anotasi dikekalkan dalam fail kelas dan tersedia semasa runtime melalui refleksi.

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();
}
Salin selepas log masuk

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());
    }
}
Salin selepas log masuk

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());
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan