Em C e C++, você pode imprimir o nome da função atual assim:
Copie o código do código da seguinte forma:
printf("%s",__func__);
Mas não existe tal ditado em Java. Tudo é um objeto e deve ser obtido de um objeto.
A primeira: Obtenha-o através da classe Thread.
Copie o código do código da seguinte forma:
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
System.out.println(Thread.currentThread().getStackTrace()[1].getClassName());
O segundo método é obtido através da classe Throwable. O segundo método pode ser estendido e qualquer subclasse de throwable pode realizar a função.
Copie o código do código da seguinte forma:
System.out.println(new Throwable().getStackTrace()[0].getMethodName());
System.out.println(new Throwable().getStackTrace()[0].getClassName());
Através destes dois métodos, o nome do método atual e o nome da classe podem ser impressos, mas há uma desvantagem: o seguinte índice:
Copie o código do código da seguinte forma:
getStackTrace()[índice]
Qual valor deve ser assumido, 0 ou 1 ou outros valores. Aqui os índices dos dois métodos são escritos como 0 e 1 respectivamente, apenas para lembrar que não é fixo e precisa ser determinado por você mesmo por meio de testes. Diz-se que o valor pode ser diferente dependendo da versão do JDK. Mas ainda não testei.
A versão JDK que usei para teste: versão java "1.7.0_17"