• ,

Task09.task0906

Наткнулся тут на одну интересную вещь:
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); количество элементов равно трем.

если мы выбираем element через непосредственное указание индекса в стеке;
StackTraceElement element = stackTraceElements[index];

то все нормально — мы получаем нужное имя класса. Но если выбирать элемент через: stackTraceElements[stackTraceElements.length-1] (помним что длина стека равна трем),

то получаемое имя класса не то, которое нужно, а то которое хранится (я даже не знаю как это сказать — в невидимой части стека чтоли), т.е. стек, при выполнении решения представляет из себя не три строки, а семь строк (можете сделать stackTraceElements[stackTraceElements.length] — будет ошибка, в которой указан полный стек). При чем если запускать тот же код в отладке пошагово, то получаем сообщение com.javarush.task.task09.task0906.Solution: main: In main method — что есть правильно

а вот просто исполнение приложения выдает такую строку:
com.intellij.rt.execution.application.AppMain: main: In main method — что есть неправильно

кто может пояснить такое явление?

Комментариев нет

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.