Memberikan Nilai Anotasi Secara Dinamik
Coretan kod yang disediakan bertujuan untuk menjana nilai secara dinamik untuk atribut anotasi. Walau bagaimanapun, ralat yang dihadapi menunjukkan bahawa nilai anotasi mestilah ungkapan malar, menyerlahkan pengehadan dalam pengendalian anotasi Java.
Dalam contoh, anotasi @MyInterface ditakrifkan dengan atribut aString. Nilai untuk atribut ini bertujuan untuk dijana secara dinamik menggunakan kaedah generateName. Walau bagaimanapun, Java memerlukan nilai atribut anotasi untuk menjadi ungkapan malar, bermakna ia mesti diketahui pada masa penyusunan. Memandangkan GENERIC_GENERATED_NAME dijana pada masa jalan, ia melanggar keperluan ini.
Tiada cara mudah untuk memintas pengehadan ini di Java. Pengkompil menilai metadata anotasi untuk anotasi RetentionPolicy.RUNTIME pada masa penyusunan dan nilai yang dijana tidak tersedia sehingga masa jalan. Begitu juga, anotasi dengan RetentionPolicy.SOURCE dibuang selepas penyusunan, menjadikan nilai yang dijana tidak boleh diakses.
Oleh itu, adalah tidak mungkin untuk menjana nilai secara dinamik untuk atribut anotasi dalam Java. Semua nilai atribut anotasi mesti diketahui dan boleh diselesaikan pada masa penyusunan.
Atas ialah kandungan terperinci Bolehkah Anda Memberikan Nilai Secara Dinamik kepada Anotasi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!