StackTrace Java

public class Solution {
    public static void main(String[] args) {
        System.out.println(method1().length);
    }

    public static StackTraceElement[] method1() {
        return Thread.currentThread().getStackTrace();
    }
}

Не могу понять почему длина 3? как это вообще высчитывается? Это длина массива или длина метода? Что такое 3, это какой-то порядковый номер или количество элементов/строк или еще чего-то?


Ответы (1 шт):

Автор решения: StateItPrimitive

Все дело в том, что сам вызов метода getStackTrace() также попадает в stack trace, который в итоге выглядит следующим образом:

  1. Solution#main();
  2. Solution#method1();
  3. java.lang.Thread#getStackTrace().

P.S. указал в прямом порядке для удобства восприятия, на стеке же это лежит в обратном порядке.

→ Ссылка