C# имеет такие действительно хорошие аннотации компилятора: CallerMemberName
, CallerFilePath
CallerLineNumber
, которые (как говорят названия) - имя участника вызывающего абонента, путь к файлу и номер строки. Это делает такие вещи, как запись номеров строк исходного кода, настолько простым (и эффективным).
До StackWalker Java 9, кажется, единственный вариант - использовать getStackTrace()
, что очень дорого. Почему Java потребовалось так много времени, чтобы включить решение?
Кроме того, насколько эффективен StackWalker Java 9 по сравнению с простым вычисляемым параметром времени компиляции? Я полагаю, что разница огромна ... напрашивается вопрос: почему Java не может иметь вычисленные параметры времени компиляции?