Comment appeler une méthode privée à l'extérieur d'une classe java
J'ai un Dummy
classe qui a une méthode privée appelée sayHello
. Je veux l'appeler sayHello
de l'extérieur Dummy
. Je pense qu'il devrait être possible avec la réflexion, mais je reçois un IllegalAccessException
. Des idées???
- N'est pas l'idée du privé que vous ne pouvez pas appeler cela de l'extérieur?
- Oui, c'est possible grâce à la réflexion, mais le point de privé est de rendre plus difficile pour l'appel de méthodes à partir de l'extérieur. Peut-être qu'il ne devrait pas être privé?
- c'est dans le même programme (module)
- tu veux dire la classe qui appel la méthode privée et votre
Dummy
classe est dans le même paquet? Si c'est le cas, vous souhaiterez peut-être utiliserpackage-private
(en omettant le modificateur). - Oui je sais je ne suis pas censé le faire dans un programme réel, je me demandais juste!!!
Vous devez vous connecter pour publier un commentaire.
utilisation
setAccessible(true)
sur votre Méthode de l'objet avant d'utiliser sesinvoke
méthode.getMethod
ne renvoie méthode publique, vous avez besoingetDeclaredMethod
D'abord tu dois obtenir la classe, ce qui est assez simple, puis obtenir la méthode par le nom à l'aide
getDeclaredMethod
ensuite, vous devez définir la méthode accessible parsetAccessible
méthode sur laMethod
objet.Si vous souhaitez passer un paramètre à la fonction privée, vous pouvez le passer en deuxième, troisième..... les arguments d'appeler la fonction. Voici un exemple de code.
Exemple complet vous pouvez le voir Ici
Exemple d'accès à la méthode privée(avec paramètre) à l'aide de java réflexion comme suit :