Я думаю, что ваша проблема в том, что вы получаете доступ к стеку вверх ногами.В возвращаемом значении элемент 0 является самым последним вызовом (который будет getStackTrace ()).Я думаю, что вы намереваетесь сделать:
public static String getMethodName(final int depth) {
final StackTraceElement[] ste = Thread.currentThread().getStackTrace();
return ste[1 + depth].getMethodName();
}
Это позволит получить доступ к последнему вызову в стеке (вне вызова getStackTrace ()).Например, если у вас есть метод:
public void foo() {
System.out.println(getMethodName(0));
}
Это выведет «foo» с вышеприведенной реализацией функции.Конечно, вы можете также захотеть добавить некоторые проверки границ в функцию, так как она может легко выйти за пределы массива.