public static String method1() {
method2();
String s = "";
StackTraceElement[] stackTraceElement = Thread.currentThread().getStackTrace();
for (StackTraceElement traceElement : stackTraceElement) {
s = traceElement.getMethodName();
if(!(s.equals("getStackTrace")||s.equals("method1"))) break;
}
System.out.println(s);
return s;
}
Inna Shevtsova
9 уровень
Есть ли более элегантное решение, чем мое?
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
(@__@)
16 июня 2020, 04:06
getStackTrace[0] - это сам стек трейс
getStackTrace[1] - это method1, который вызвал ретурн
ну а второй индекс, это тот метод, что вызвал method1
для понимания можно пробежаться циклом с принтом по стеку
+1
Bart Mf
16 июня 2020, 01:20
да, в getStackTrace()[2] находится метод вызывающий метод от куда вызывается трейс :)
вызывайте у этого элемента нужную функцию, не перебирая весь стекТрейс
+1