En C y C++, puede imprimir el nombre de la función actual de esta manera:
Copie el código de código de la siguiente manera:
printf("%s",__func__);
Pero no existe tal dicho en Java. Todo es un objeto y debe obtenerse de un objeto.
El primero: Obtenerlo a través de la clase Thread.
Copie el código de código de la siguiente manera:
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
System.out.println(Thread.currentThread().getStackTrace()[1].getClassName());
El segundo método se obtiene a través de la clase Throwable. El segundo método se puede ampliar y cualquier subclase de throwable puede realizar la función.
Copie el código de código de la siguiente manera:
System.out.println(new Throwable().getStackTrace()[0].getMethodName());
System.out.println(new Throwable().getStackTrace()[0].getClassName());
A través de estos dos métodos, se puede imprimir el nombre del método actual y el nombre de la clase, pero hay un inconveniente: el siguiente índice:
Copie el código de código de la siguiente manera:
getStackTrace()[índice]
¿Qué valor se debe tomar, 0 o 1 u otros valores? Aquí los índices de los dos métodos se escriben como 0 y 1 respectivamente, solo para recordar que no es fijo y debe determinarlo usted mismo mediante pruebas. Se dice que el valor puede ser diferente según la versión de JDK. Pero no lo he probado yo mismo.
La versión de JDK que utilicé para las pruebas: versión de Java "1.7.0_17"