Rumah >Java >javaTutorial >Bolehkah Anotasi Java Diberikan Nilai Secara Dinamik daripada Pemalar?
Peruntukan Dinamik Nilai Anotasi daripada Pemalar Java
Di Jawa, sifat intrinsik anotasi yang diselesaikan pada masa penyusunan menimbulkan persoalan tentang sama ada ia boleh dilaksanakan untuk memberikan nilai secara dinamik kepada anotasi daripada pemalar.
Pertimbangkan senario ini:
public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; }
@SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... }
Dalam percubaan untuk mengelakkan berulang kali menyatakan rentetan dalam anotasi, pembangun boleh mencari kaedah untuk memanfaatkan pemalar sebaliknya. Contohnya:
@SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... }
Walau bagaimanapun, pendekatan ini mencetuskan ralat kompilasi disebabkan oleh kekangan Java yang hanya primitif dan rentetan boleh berfungsi sebagai pemalar masa kompilasi. Seperti yang dinyatakan dalam Spesifikasi Bahasa Java:
"Ungkapan pemalar masa kompilasi ialah ungkapan yang menunjukkan nilai jenis primitif atau Rentetan yang tidak lengkap secara tiba-tiba dan digubah menggunakan hanya yang berikut:"
Oleh itu, walaupun FieldValues.FIELD1 memegang tatasusunan rentetan, Java tidak mengklasifikasikan ini sebagai anotasi yang sah nilai.
Selain itu, adalah penting untuk ambil perhatian bahawa memastikan integriti item tatasusunan tidak dapat dilakukan di Java. Pada masa jalan, pengubahsuaian pada tatasusunan (cth., FieldValues.FIELD1[0]="value3") dibenarkan, menyebabkan ketekalan tatasusunan boleh dipersoalkan.
Oleh itu, disimpulkan bahawa walaupun pemalar tidak boleh membekalkan nilai secara langsung kepada anotasi dalam Java, alternatif wujud. Satu penyelesaian yang mungkin melibatkan mencipta pemproses anotasi tersuai atau menggunakan pantulan untuk menetapkan nilai secara dinamik semasa masa jalan.
Atas ialah kandungan terperinci Bolehkah Anotasi Java Diberikan Nilai Secara Dinamik daripada Pemalar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!