Developers exploring reflection often encounter scenarios where accessing private methods is necessary. While Java restricts direct access to these methods through traditional reflection mechanisms, it provides a workaround through reflection-based methods.
Solution:
To invoke a private method using reflection, modify the provided code snippet as follows:
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);
Caveats:
Alternative Approaches:
If modifying the method's accessibility or implementing a PrivilegedAction (as suggested in the provided answer) is not feasible, consider the following alternatives:
The above is the detailed content of How Can I Invoke Private Methods Using Java Reflection?. For more information, please follow other related articles on the PHP Chinese website!