Класс с индексом [0] это - java.lang.Thread. это понятно а вот дальше вопрос...
индекс [2] ни чем не отличается, но -1 попытка на ровном месте.
И main() в Solution и log() в Solution, если для валидатора есть разница то в чем она?
Объясните если не сложно как так получается. Спасибо.
Dolivo Serg
40 уровень
Помогите понять индексы для getClassName()
Решен
Комментарии (10)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
AndreyJava Developer в Инфотранс
18 февраля 2021, 21:10решение
[0].getMethodName() - getStackTrace
[1].getMethodName() - метод, в котором находимся
[2].getMethodName() - метод, который вызвал тот в котором мы находимся
и далее по аналогии
+3
Dolivo Serg
18 февраля 2021, 21:17
вопрос о getClassName()
0
Ksenia VolkovaJava Developer в DXCMaster
18 февраля 2021, 21:20
А с getClassName() все то же самое, только "класс в котором находится метод" и т.д.
+1
Ksenia VolkovaJava Developer в DXCMaster
18 февраля 2021, 21:03решение
Метод log можно вызвать и из другого класса. И тогда класс у элемента [2] будет не тот же, что у элемента [1].
+2
Dolivo Serg
18 февраля 2021, 21:20решение
Согласен, но это в теории?! А конкретно в данном случае log в этом же классе
+2
Dolivo Serg
18 февраля 2021, 21:23решение
[0].getClassName() - java.lang.Thread
[1].getClassName() - com.javarush.task.task09.task0906.Solution
[2].getClassName() - com.javarush.task.task09.task0906.Solution
+2
Ksenia VolkovaJava Developer в DXCMaster
18 февраля 2021, 21:24решение
И в теории, и на практике. Нам же нужен не класс, в котором находится метод log. Нам нужен класс, в котором находится метод, вызвавший log. А он может быть каким угодно.
Создай новый класс, например Validator
Метод log находится по-прежнему в Solution, но вызываем-то мы его из другого класса.
+2
Dolivo Serg
18 февраля 2021, 21:28
Согласен, но тогда валидатор пусть и ругал бы только по второму пункту.
0
Ksenia VolkovaJava Developer в DXCMaster
18 февраля 2021, 21:33
В примере из задания выводится имя класса, метод которого вызвал log().
У тебя выводится имя класса, в котором находится log().
Если ты не видишь разницы, это не значит, что ее нет.
Или ты считаешь, что можно было бы написать
System.out.println("com.javarush.task.task09.task0906.Solution: main: In main method");
и последний пункт засчитался бы?
0
Dolivo Serg
18 февраля 2021, 21:48
Спасибо большое, само обсуждение помогло мне понять азы данного процесса. Думаю мне еще предстоит узнать зачем данный "инструмент" нужен. А что касается вывода в консоль, я не претендую на истину, но считал что это Строка И если мне говорят "вывод должен соответствовать" и он соответствует до последнего чара то да System.out.println("com.javarush.task.task09.task0906.Solution: main: In main method");
в данное условие вписывается. Вот теперь опять ни в чем не могу быть уверен, а только стал думать что хоть чуть-чуть разобрался =(
0