В C и C++ вы можете напечатать текущее имя функции следующим образом:
Скопируйте код кода следующим образом:
printf("%s",__func__);
Но в Java такого высказывания нет. Всё — это объект, и его нужно получить из объекта. Есть два способа:
Первый: получить его через класс Thread.
Скопируйте код кода следующим образом:
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
System.out.println(Thread.currentThread().getStackTrace()[1].getClassName());
Второй метод получается через класс Throwable. Второй метод можно расширить, и эту функцию может реализовать любой подкласс throwable.
Скопируйте код кода следующим образом:
System.out.println(new Throwable().getStackTrace()[0].getMethodName());
System.out.println(new Throwable().getStackTrace()[0].getClassName());
С помощью этих двух методов можно распечатать имя текущего метода и имя класса, но есть недостаток: следующий индекс:
Скопируйте код кода следующим образом:
getStackTrace()[индекс]
Какое значение следует взять, 0 или 1 или другие значения. Здесь индексы двух методов записаны как 0 и 1 соответственно, просто чтобы напомнить себе, что оно не фиксированное и его нужно определять самостоятельно путем тестирования. Говорят, что значение может отличаться в зависимости от версии JDK. Но сам не проверял.
Версия JDK, которую я использовал для тестирования: версия Java «1.7.0_17».