


Bagaimanakah Anda Boleh Menggunakan Kaedah Peribadi Menggunakan Refleksi di Jawa?
Invokasi Kaedah Peribadi melalui Refleksi
Di Java, penyeruan refleksi langsung kaedah persendirian tidak dibenarkan. Walau bagaimanapun, terdapat pendekatan alternatif untuk mencapai fungsi ini.
Pertimbangkan senario berikut di mana kaedah, yang pada mulanya ditakrifkan sebagai peribadi, perlu digunakan melalui refleksi:
Element node = outerNode.item(0); String methodName = node.getAttribute("method"); String objectName = node.getAttribute("object"); if ("SomeObject".equals(objectName)) object = someObject; else object = this; method = object.getClass().getMethod(methodName, (Class[]) null);
Kod ini cuba untuk dapatkan rujukan kepada kaedah persendirian yang ditentukan oleh atribut "methodName". Walau bagaimanapun, pendekatan ini mencetuskan "NoSuchMethodException" kerana kaedah peribadi tidak boleh diakses melalui refleksi konvensional.
Untuk mengatasi had ini, kita boleh menggunakan kaedah getDeclaredMethod:
Method method = object.getClass().getDeclaredMethod(methodName); method.setAccessible(true); Object r = method.invoke(object);
Kaedah getDeclaredMethod mendapatkan semula kaedah tanpa mengira keterlihatannya. Kaedah setAccessible membolehkan kami memintas sekatan akses peribadi dan menggunakan kaedah tersebut.
Awas:
- getDeclaredMethod mencari kaedah yang diisytiharkan dalam kelas semasa sahaja. Untuk kaedah yang diwarisi, anda mungkin perlu merentasi hierarki kelas.
- Sesetengah SecurityManagers mungkin melarang penggunaan setAccessible. Pertimbangkan untuk melaksanakan invokasi sebagai PrivilegedAction menggunakan AccessController atau Subject.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menggunakan Kaedah Peribadi Menggunakan Refleksi di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Dreamweaver CS6
Alat pembangunan web visual

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa