Rumah  >  Artikel  >  Java  >  Bolehkah Anda Menghantar Nilai Dinamik ke Anotasi Java?

Bolehkah Anda Menghantar Nilai Dinamik ke Anotasi Java?

Patricia Arquette
Patricia Arquetteasal
2024-10-30 08:28:02969semak imbas

 Can You Pass Dynamic Values to Java Annotations?

Menyediakan Nilai Dinamik kepada Anotasi Java

Percubaan dan Isu Awal

Di Java, anda menggunakan anotasi untuk menyediakan metadata kepada kelas, kaedah dan pembolehubah. Dalam sesetengah senario, anda mungkin mahu memberikan nilai dinamik kepada atribut anotasi. Walau bagaimanapun, memberikan ungkapan tidak tetap, seperti hasil panggilan kaedah, kepada atribut anotasi secara amnya adalah dilarang. Seperti yang anda alami:

@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)

Pengkompil mengadu:

"Nilai untuk atribut anotasi MyInterface.aString mestilah ungkapan tetap"

Had Penyusun

Penghadan ini berpunca daripada penilaian pengkompil terhadap metadata anotasi untuk anotasi RetentionPolicy.RUNTIME pada masa penyusunan. Nilai yang diberikan kepada atribut anotasi mesti diketahui pada masa penyusunan.

Dasar Pengekalan Berbeza

Java menyediakan dasar pengekalan yang berbeza untuk anotasi:

  • Polisi Pengekalan.SUMBER: Dibuang selepas masa penyusunan
  • Polisi Pengekalan.KELAS: Disertakan dalam fail kelas
  • Polisi Pengekalan.RUNTIME: Dikekalkan sepanjang masa jalan

Penyelesaian

Malangnya, mencapai matlamat anda untuk menyediakan nilai rentetan yang dijana secara dinamik kepada anotasi tidak mungkin disebabkan oleh pengehadan pengkompil. Baik RetentionPolicy.SOURCE mahupun RetentionPolicy.RUNTIME tidak membenarkan perkara ini.

Atas ialah kandungan terperinci Bolehkah Anda Menghantar Nilai Dinamik ke Anotasi 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