кто может поясните.
Задачу решил (просто везде - return следующий метод).В целом все понятно.
Добавил:
System.out.println(stackTraceLength);
System.out.println(method1().length);
System.out.println(method10().length);
Дабы разобраться, но полученные значения меня поставили в ступор
Метод1 - длина 17
Метод10 - длина 8
Откуда такие цифры?
Если я правильно понял Метод1 должен быть 12 (10 методов, main, сам метод getStackTrace()), а Метод10 - 3. Ну во всяком случае в IDEA. Через сайт люди писали цифры больше, различные внутренние процессы, это я понял.
Для понимания посмотрел стек в main:
public static void main(String[] args) {
int stackTraceLength = method1().length - method10().length + 1;
StackTraceElement[] l = Thread.currentThread().getStackTrace();
for (StackTraceElement l1 :l
) {
System.out.println(l1.getMethodName());
}
Получил результат:
getStackTrace
main
invoke0
invoke
invoke
invoke
main
Что за invoke? почему main 2жды? По моему результат должен быть такой:
getStackTrace
main
?
Вообщем буду рад любым пояснениям.
Aka_ron4uk
28 уровень
Длина Стек трейса!?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александр
15 августа 2019, 07:48
сам удивился, мне казалось это вдобавок возвращаются методы валидатора внутри которого мы работаем
0
Aka_ron4uk Java Developer
17 августа 2019, 08:11
я создал новый проект, не в папке javarush, и ситуация аналогичная.Интересно валидатор встраивается в любой проект в IDEA? Если так, то видимо да, его методы.
0