Проверяю через System.out.println, все правильно выводит:
43
33
23
13
9
Т.е. method5() действительно вызывается из линии 43, method4() - из линии 33, и т.д. Но проверка не проходится.
Внимание: везде в коде, где stackTrace[2].getLineNumber(); - на самом деле, stackTrace[1].getLineNumber();
Почему-то прикрепляется моя старая версия кода.
package com.javarush.task.task09.task0902;
/*
И снова StackTrace
*/
public class Solution {
public static void main(String[] args) throws Exception {
method1();
}
public static int method1() {
method2();
//напишите тут ваш код
int line;
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
line = stackTrace[2].getLineNumber();
// System.out.println(line);
return line;
}
public static int method2() {
method3();
//напишите тут ваш код
int line;
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
line = stackTrace[2].getLineNumber();
// System.out.println(line);
return line;
}
public static int method3() {
method4();
//напишите тут ваш код
int line;
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
line = stackTrace[2].getLineNumber();
// System.out.println(line);
return line;
}
public static int method4() {
method5();
//напишите тут ваш код
int line;
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
line = stackTrace[2].getLineNumber();
// System.out.println(line);
return line;
}
public static int method5() {
//напишите тут ваш код
int line;
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
line = stackTrace[2].getLineNumber();
// System.out.println(line);
return line;
}
}
- Thread.currentThread() с индексом 2
либо