Les développeurs explorant la réflexion rencontrent souvent des scénarios dans lesquels l'accès aux méthodes privées est nécessaire. Bien que Java restreint l'accès direct à ces méthodes via des mécanismes de réflexion traditionnels, il fournit une solution de contournement via des méthodes basées sur la réflexion.
Solution :
Pour invoquer une méthode privée à l'aide de la réflexion , modifiez l'extrait de code fourni comme suit :
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);
Avertissements :
Approches alternatives :
Si vous modifiez l'accessibilité de la méthode ou implémentez une PrivilegedAction (comme suggéré dans la réponse fournie) n'est pas réalisable, envisagez les alternatives suivantes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!