Rumah > Java > javaTutorial > Bolehkah Java Reflection Mendapatkan Nama Pembolehubah yang Diisytiharkan Secara Tempatan?

Bolehkah Java Reflection Mendapatkan Nama Pembolehubah yang Diisytiharkan Secara Tempatan?

Linda Hamilton
Lepaskan: 2025-01-03 19:31:39
asal
849 orang telah melayarinya

Can Java Reflection Retrieve Locally Declared Variable Names?

Java Reflection: Mendedahkan Nama Pembolehubah Setempat

Pernyataan Masalah:

Bolehkah Java Reflection digunakan untuk mendapatkan semula nama pembolehubah yang diisytiharkan secara tempatan? Diberi coretan kod seperti:

Foo b = new Foo();
Foo a = new Foo();
Foo r = new Foo();
Salin selepas log masuk

Bolehkah kita membangunkan kaedah yang menentukan nama pembolehubah, seperti:

public void baz(Foo... foos) {
    for (Foo foo : foos) {
        // Print the name of each foo - b, a, and r
        System.out.println(***); // Placeholder for variable name access
    }
}
Salin selepas log masuk

Penyelesaian:

Sehingga Java 8, mendapatkan semula nama pembolehubah tempatan melalui refleksi tidak dapat dilakukan. Walau bagaimanapun, sokongan separa telah diperkenalkan dalam versi itu. Nama parameter, sejenis pembolehubah tempatan yang khusus, boleh diakses melalui refleksi. Ini terbukti berguna dalam menggantikan anotasi seperti @ParameterName, yang biasa digunakan oleh rangka kerja suntikan kebergantungan.

Untuk maklumat nama pembolehubah setempat yang lebih komprehensif, memeriksa fail kelas mungkin menawarkan beberapa cerapan. Semasa penyusunan, teknik pengoptimuman kadangkala menghapuskan data ini untuk menjimatkan ruang. Walau bagaimanapun, jika ia wujud, atribut jadual pembolehubah setempat kaedah menyenaraikan jenis dan nama pembolehubah dalam skop arahan masing-masing.

Alat kejuruteraan Bytecode seperti ASM berpotensi menyediakan mekanisme untuk memeriksa maklumat ini pada masa jalan. Memandangkan aplikasi khusus keupayaan ini terutamanya dalam persekitaran pembangunan, perpustakaan tersebut menawarkan keupayaan pelengkap di luar sekadar mengekstrak nama pembolehubah.

Atas ialah kandungan terperinci Bolehkah Java Reflection Mendapatkan Nama Pembolehubah yang Diisytiharkan Secara Tempatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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