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