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
Linda Hamiltonasal
2025-01-03 19:31:39780semak imbas

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();

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
    }
}

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:
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