Pembangun yang meneroka refleksi sering menghadapi senario yang memerlukan akses kaedah peribadi. Walaupun Java mengehadkan akses terus kepada kaedah ini melalui mekanisme pantulan tradisional, ia menyediakan penyelesaian melalui kaedah berasaskan pantulan.
Penyelesaian:
Untuk menggunakan kaedah persendirian menggunakan pantulan , ubah suai coretan kod yang disediakan seperti berikut:
Element node = outerNode.item(0); String methodName = node.getAttribute("method"); String objectName = node.getAttribute("object"); if ("SomeObject".equals(objectName)) object = someObject; else object = this; // Use getDeclaredMethod to include both private and inherited methods Method method = object.getClass().getDeclaredMethod(methodName); // Enable access to the private method using setAccessible method.setAccessible(true); // Invoke the method and store the result Object r = method.invoke(object);
Kaveat:
Pendekatan Alternatif:
Jika mengubah suai kebolehcapaian kaedah atau melaksanakan PrivilegedAction (seperti yang dicadangkan dalam jawapan yang diberikan) tidak boleh dilaksanakan, pertimbangkan alternatif berikut:
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Kaedah Peribadi Menggunakan Refleksi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!