кто может поясните. Задачу решил (просто везде - 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 ? Вообщем буду рад любым пояснениям.