In C und C++ können Sie den aktuellen Funktionsnamen wie folgt drucken:
Kopieren Sie den Codecode wie folgt:
printf("%s",__func__);
In Java gibt es jedoch kein solches Sprichwort, und es gibt zwei Möglichkeiten, es von einem Objekt zu erhalten:
Der erste: Erhalten Sie es über die Thread-Klasse.
Kopieren Sie den Codecode wie folgt:
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
System.out.println(Thread.currentThread().getStackTrace()[1].getClassName());
Die zweite Methode wird über die Throwable-Klasse erhalten. Die zweite Methode kann erweitert werden. Solange es sich um eine Unterklasse von Throwable handelt, kann die Funktion implementiert werden.
Kopieren Sie den Codecode wie folgt:
System.out.println(new Throwable().getStackTrace()[0].getMethodName());
System.out.println(new Throwable().getStackTrace()[0].getClassName());
Mit diesen beiden Methoden können der aktuelle Methodenname und der Klassenname ausgedruckt werden, es gibt jedoch einen Nachteil: den folgenden Index:
Kopieren Sie den Codecode wie folgt:
getStackTrace()[index]
Welcher Wert sollte angenommen werden, 0 oder 1 oder andere Werte? Hier werden die Indizes der beiden Methoden als 0 bzw. 1 geschrieben, nur um Sie daran zu erinnern, dass dies nicht festgelegt ist und durch Tests selbst ermittelt werden muss. Es wird gesagt, dass der Wert je nach JDK-Version unterschiedlich sein kann. Habe es aber selbst nicht getestet.
Die JDK-Version, die ich zum Testen verwendet habe: Java-Version „1.7.0_17“