Rumah >Java >javaTutorial >Bolehkah Parameter Anotasi dalam Java Dimulakan dengan Pemalar Rentetan atau Tatasusunan?

Bolehkah Parameter Anotasi dalam Java Dimulakan dengan Pemalar Rentetan atau Tatasusunan?

Susan Sarandon
Susan Sarandonasal
2024-11-28 07:10:12806semak imbas

Can Annotation Parameters in Java Be Initialized with String or Array Constants?

Permulaan Parameter Anotasi dengan Pemalar Rentetan

Masalah:

Di Java, adakah mungkin untuk memulakan parameter anotasi dengan rentetan pemalar atau pemalar tatasusunan? Parameter anotasi dinilai pada masa penyusunan, yang mungkin menghalang kefungsian ini.

Contoh sintaks yang dikehendaki ialah:

@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
   ....
}

Di mana FieldValues ​​ialah antara muka dengan tatasusunan tetap FIELD1.

Jawapan:

Menurut kepada Spesifikasi Bahasa Java 15.28, pemalar masa kompilasi hanya boleh menjadi primitif dan Rentetan. Ini bermakna tidak mungkin menggunakan pemalar tatasusunan untuk memulakan parameter anotasi.

Penjelasan:

Anotasi dinilai pada masa penyusunan dan nilai yang dipegangnya mesti diketahui pada masa itu. Tatasusunan bukan pemalar masa kompilasi kerana elemennya boleh diubah suai semasa masa jalan. Oleh itu, adalah tidak mungkin untuk menggunakan pemalar tatasusunan sebagai parameter anotasi.

Penyelesaian Kemungkinan:

  • Gunakan tatasusunan tetap: Tentukan nilai tatasusunan secara langsung dalam parameter anotasi, memastikan ia kekal malar sepanjang program.
  • Gunakan kelas pembalut: Buat kelas pembalut yang merangkum tatasusunan bukan akhir dan menyediakan akses berterusan kepada elemennya.
  • Gunakan prapemproses alatan: Gunakan alatan pra-pemproses seperti anotasi atau pemproses anotasi untuk menjana pemalar yang diperlukan semasa penyusunan.

Nota:

Walaupun tatasusunan ditakrifkan sebagai muktamad, ia masih bukan pemalar masa kompilasi dan elemennya boleh diubah suai secara reflektif .

Atas ialah kandungan terperinci Bolehkah Parameter Anotasi dalam Java Dimulakan dengan Pemalar Rentetan atau Tatasusunan?. 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