Bonjour,
J'ai 2 classes A et B qui appellent une méthode dans une classe C, j'aimerais connaitre dynamiquement laquelle des 2 classe A ou B qui a appelé cette méthode !
Merci d'avance.
Bonjour,
J'ai 2 classes A et B qui appellent une méthode dans une classe C, j'aimerais connaitre dynamiquement laquelle des 2 classe A ou B qui a appelé cette méthode !
Merci d'avance.
Bonjour, le plus simple, serait d'utiliser le polymorphisme, faire 2 méthodes avec le même nom mais qui prenne des paramètres différents.
Est-ce que ça réponds à ton besoin?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class C { maMethode(A a) {} maMethode(B b) {} }
Merci pour la réponse mais c'est pas ça ce que je voulais dire; en fait je veux juste connaitre à quelle Classe appartient la classe appelante , et l'exemple avec les classes A et B n'est qu'un exemple pour simplifier, en réalité j'ai plusieurs méthodes et plusieurs classes !! Merci.
y'as t'il une méthode ou une classe dans le package : java.lang.reflect qui permet de faire ce genre d'introspection ?
Je ne crois pas que cela existe. De ce que j'en connais (pas grand chose je le reconnais) ce package est fait pour appeler de façon dynamique des classes, méthodes ou attributs, mais pas pour savoir qui a appelé la méthode courante.
Par contre je viens de retrouver ce que j'avais fait pour identifier le nom de la méthode appelant une méthode. En modifiant le level et getMethodName en getClassName, cela devrait fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public static String getCallingMethod() { return trace(Thread.currentThread().getStackTrace(), 2); } private static String trace(StackTraceElement[] e, int level) { if(e != null && e.length >= level) { StackTraceElement s = e[level]; if(s != null) { return s.getMethodName(); } } return null; }
Partager