Всем доброго дня.
В решении задачи вроде бы все работает и по логике не отличается от "правильного решения", но после запуска вывод стека на экран идет куда дальше моего метода main, проходит через непонятные invoke и далее. Не хватает знаний, чтобы понять наверняка, только есть предположение, что вывод получается до корня программы-браузерного компилятора JavaRush...
А именно, вывод, начиная с моего main:
Метод main вызван из строки 12 класса com.javarush.task.pro.task14.task1414.Solution в файле Solution.java.
Метод invoke0 вызван из строки -2 класса jdk.internal.reflect.NativeMethodAccessorImpl в файле NativeMethodAccessorImpl.java.
Метод invoke вызван из строки 62 класса jdk.internal.reflect.NativeMethodAccessorImpl в файле NativeMethodAccessorImpl.java.
Метод invoke вызван из строки 43 класса jdk.internal.reflect.DelegatingMethodAccessorImpl в файле DelegatingMethodAccessorImpl.java.
Метод invoke вызван из строки 567 класса java.lang.reflect.Method в файле Method.java.
Метод callMainMethod вызван из строки 76 класса com.javarush.task.common.model.execution.ExecuteService в файле ExecuteService.java.
Метод execute вызван из строки 129 класса com.javarush.task.common.model.execution.ExecuteService в файле ExecuteService.java.
Метод execute вызван из строки 88 класса com.javarush.task.app.execution.ExecutionService в файле ExecutionService.java.
Метод main вызван из строки 162 класса com.javarush.task.app.execution.ExecutionService в файле ExecutionService.java.
Метод main вызван из строки 47 класса com.javarush.task.app.MainApplication в файле MainApplication.java.
Можно конечно написать костыль, который обрубит цикл на моем main и дальше не пойдет, чтобы решение засчиталось. Но все-таки хочется разобраться, что и как здесь произошло. Прошу помочь :)
package com.javarush.task.pro.task14.task1414;
/*
Готовим коктейли
*/
public class Solution {
public static final String OUTPUT_FORMAT = "Метод %s вызван из строки %d класса %s в файле %s.\n";
public static void main(String[] args) {
makeScrewdriver();
}
public static void printStackTrace(StackTraceElement[] stackTrace) {
for(StackTraceElement info: stackTrace) {
String a = info.getMethodName();
int b = info.getLineNumber();
String c = info.getClassName();
String d = info.getFileName();
System.out.println(String.format(OUTPUT_FORMAT, a, b, c, d));//напишите тут ваш код
} }
static void makeScrewdriver() {
addJuice();
}
static void addJuice() {
addVodka();
}
static void addVodka() {
printStackTrace(Thread.currentThread().getStackTrace());
}
}