![](/img/trans.png)
[英]Eclipse - `open call hierarchy` stop searching in lambda chain
[英]Eclipse call hierarchy lambda
我认为自 Lambda 为 Java 发布以来已经过去了 5 年。
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) {
}
当我在inner1
方法上按CTRL-ALT-H -(打开调用层次结构)时,我希望看到从inner1
到main
方法的整个堆栈跟踪。 相反,我的 staktrace 是在inner
方法上修剪的。 我刚刚下载了最新的 Eclipse,我认为是 2018-12 年,之前我使用的是 Mars。
Intellij 可以向我展示预期的调用层次结构,我真的不明白为什么 Eclipse 仍然不能做到这一点。 不确定是否还有其他人在 2019 年使用 Eclipse,但也许您可以建议一个插件或其他东西。
切换到 Intellij 不是一种选择,我尝试了几次,但这个习惯很难克服。
更新
有类似的 - 所以问题
在运行时,对 lambda 表达式的求值类似于对类实例创建表达式的求值,因为正常完成会生成对对象的引用。 对 lambda 表达式的评估与 lambda 主体的执行不同。
和
请注意,对于实现诸如 Consumer 之类的库类型的 lambda,工作区中进入 accept(T) 的调用者数量可能很容易变得无法管理,类似于通过例如 Runnable.run() 的任何调用层次结构 - 但这并没有问题通过 lambda 调用层次结构的一般用途。
我并不真正关心 lambda 内部,不知何故其他 IDE 能够显示预期的堆栈跟踪
Eclipse 4.22(2021 年第四季度)应该有助于:
改进了调用层次结构视图中的 lambda 支持
Call Hierarchy 视图得到了增强,不仅显示了 lambda 函数的调用者,还显示了声明函数的调用者。
对于以下代码:
检查 function() 的调用者将显示:
树中的
[declaration]
节点是新添加的,它显示了definer()
函数的调用definer()
,在这种情况下,只有main()
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.