Я думаю, что прошло 5 лет с тех пор, как Lambda была выпущена для Java.
public static void main(String[] args) {
go();
}
private static void go() {
Set<String> set = new HashSet<>();
set.stream().forEach((s) -> {
inner(s);
});
}
private static void inner(String s) {
inner1(s);
}
private static void inner1(String s) {
}
Когда я нажимаю CTRL-ALT-H - (открытая иерархия вызовов) в методе inner1
, я ожидаю увидеть трассировку всего стека от метода inner1
до main
. Вместо этого мой staktrace обрезается по методу inner
. Я только что загрузил новейшее Eclipse, я думаю, это 2018-12, ранее я использовал Mars.
Intellij может показать мне ожидаемую иерархию вызовов, и я не совсем понимаю, почему Eclipse все еще не может этого сделать. Не уверен, что кто-то еще использует Eclipse в 2019 году, но, возможно, вы можете посоветовать плагин или что-то еще.
Переключение на Intellij не вариант, я пробовал пару раз, но эту привычку трудно преодолеть.
UPDATE
Есть похожее - ТАК вопрос
Во время выполнения вычисление лямбда-выражения аналогично
вычисление выражения создания экземпляра класса, насколько обычно
Завершение производит ссылку на объект. Оценка лямбды
выражение отличается от выполнения лямбда-тела.
и
Просто обратите внимание, что для лямбда-выражений, реализующих такие типы библиотек, как
Потребитель, количество звонящих в accept (T) в рабочей области может
легко становится неуправляемым, похожим на любую иерархию вызовов,
например, Runnable.run () - но это не ставит под сомнение общую полезность
иерархий вызовов через лямбды.
Меня не волнует внутреннее лямбда-выражение, каким-то образом другая IDE способна показать ожидаемую трассировку стека