Rumah > Java > javaTutorial > teks badan

Bolehkah Anotasi Java Menerima Nilai Dijana Secara Dinamik pada Runtime?

DDD
Lepaskan: 2024-10-28 14:42:30
asal
406 orang telah melayarinya

 Can Java Annotations Accept Dynamically Generated Values at Runtime?

Menilai Anotasi pada Runtime

Dalam Java, anotasi berguna untuk menyediakan metadata kepada pengkompil atau sistem masa jalan. Walau bagaimanapun, soalan berterusan ialah jika anotasi boleh menerima nilai yang dijana secara dinamik pada masa jalan.

Percubaan di bawah cuba menjana nilai rentetan untuk atribut aString @MyInterface:

<code class="java">@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
public class MyClass {

    static final String GENERIC_GENERATED_NAME = MyClass.generateName(MyClass.class);

    public static final String generateName(final Class<?> c) {
        return c.getClass().getName();
    }
}</code>
Salin selepas log masuk

Walau bagaimanapun, pengkompil akan menolak ini dengan mesej ralat:

The value for annotation attribute MyInterface.aString must be a constant expression
Salin selepas log masuk

Ini kerana anotasi dinilai pada masa penyusunan, tetapi GENERIC_GENERATED_NAME tidak diketahui sehingga masa jalan.

Untuk mencapai kesan yang diingini, ia adalah perlu untuk mencipta pemproses anotasi yang boleh menilai kaedah generateName pada masa penyusunan. Walau bagaimanapun, penyelesaian ini mempunyai had, kerana tiada sokongan dalam Java untuk menilai kod secara dinamik semasa masa jalan.

Atas ialah kandungan terperinci Bolehkah Anotasi Java Menerima Nilai Dijana Secara Dinamik pada Runtime?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!