J'ai une classe qui utilise XML et la réflexion pour retourner Object
s à une autre classe.N'importe quel moyen d'appeler une méthode privée?
Normalement, ces objets sont des sous-champs d'un objet externe, mais de temps en temps, c'est quelque chose que je veux générer à la volée. J'ai essayé quelque chose comme ça mais en vain. Je crois que c'est parce que Java ne vous permettra pas d'accéder aux méthodes private
pour la réflexion.
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);
Si la méthode fournie est private
, il échoue avec un NoSuchMethodException
. Je pourrais le résoudre en faisant la méthode public
, ou en faisant une autre classe pour en tirer. Bref, je me demandais simplement s'il était possible d'accéder à la méthode private
par réflexion.
quand je l'ai fait dans le passé, j'ai aussi appelé method.setAccessible (false) après avoir appelé la méthode, mais je n'ai aucune idée si cela est nécessaire ou non. – shsteimer
Non, lorsque vous définissez l'accessibilité, elle s'applique uniquement à cette instance. Tant que vous ne laissez pas cet objet Method échapper à votre contrôle, c'est sûr. – erickson
Je retourne absolument l'amour vous mate. Réponse géniale + mauvais code == pas si mauvais jour. – droope