En C et C++, vous pouvez imprimer le nom de la fonction actuelle comme ceci :
Copiez le code comme suit :
printf("%s",__func__);
Mais il n'existe pas de tel dicton en Java. Tout est un objet, et il doit être obtenu à partir d'un objet. Il y a deux manières :
La première : l’obtenir via la classe Thread.
Copiez le code comme suit :
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
System.out.println(Thread.currentThread().getStackTrace()[1].getClassName());
La deuxième méthode est obtenue via la classe Throwable. La deuxième méthode peut être étendue et n'importe quelle sous-classe de throwable peut réaliser la fonction.
Copiez le code comme suit :
System.out.println(new Throwable().getStackTrace()[0].getMethodName());
System.out.println(new Throwable().getStackTrace()[0].getClassName());
Grâce à ces deux méthodes, le nom de la méthode actuelle et le nom de la classe peuvent être imprimés, mais il y a un inconvénient : l'index suivant :
Copiez le code comme suit :
getStackTrace()[index]
Quelle valeur faut-il prendre, 0 ou 1 ou d'autres valeurs ? Ici, les index des deux méthodes sont écrits respectivement 0 et 1, juste pour vous rappeler qu'elle n'est pas fixe et doit être déterminée par vous-même grâce à des tests. On dit que la valeur peut être différente selon la version du JDK. Mais je ne l'ai pas testé moi-même.
La version du JDK que j'ai utilisée pour les tests : version java "1.7.0_17"