Решил задачу очень быстро, но решил разобраться в уже изначально записанной строчке кода:
int stackTraceLength = method1().length - method10().length + 1;
но так и не понял почему длину stackTrace записали именно таким способом
При отдельном выводе method1.length - выводит 12
А при method10.length - 3.
откуда такие цифры ?
И еще 1 вопрос, считается ли .length которая без скобок, методом ?
Михаил
9 уровень
Откуда столько вызовов ?
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia MarioMaster
7 апреля 2020, 16:17полезный
ПС .length зависит от типа. Например, в массиве - .length - поле а метода нет, в стринге - метод, а поля нет. А в List метод size(), а ленгс нет.
+1
Ksenia MarioMaster
7 апреля 2020, 16:08полезный
считается ли .length которая без скобок, методом
нет. .length - поле
При отдельном выводе method1.length - выводит 12
оооо, тут вопрос к валидатору. когда запускают твой код - твоя первая строка - не первая))
проверь через
ПС через идеху, по теории, выдаст первую. но я не проверяла +1
Дмитрий
7 апреля 2020, 15:03полезный
Каждый метод возвращает массив StackTraceElement[ ].
Как узнать длину массива?
Все просто, например ты хочешь узнать размер method10().
method10().length — это main - method10() - getStackTrace(). Вывод: 3
или узнать размер method1()
method1().length — это main - method1() - method2() - ... - method10() - getStackTrace(). Вывод: 12
+2