eclipse - Eclipse 调用层次结构 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) {
}
当我在方法上按 CTRL-ALT-H - (打开调用层次结构)时inner1
,我希望看到从 ininner1
到main
方法的整个堆栈跟踪。相反,我的 staktrace 是在inner
方法上修剪的。我刚刚下载了最新的 Eclipse,我认为它是 2018-12,之前我使用的是 Mars。
Intellij 可以向我展示预期的调用层次结构,我真的不明白为什么 Eclipse 仍然无法做到这一点。不确定是否有人在 2019 年使用 Eclipse,但也许您可以建议一个插件或其他东西。
切换到 Intellij 不是一种选择,我尝试了几次,但这种习惯很难克服。
更新
有类似的-所以问题
在运行时,lambda 表达式的求值类似于类实例创建表达式的求值,只要正常完成产生对对象的引用。lambda 表达式的求值不同于 lambda 主体的执行。
和
请注意,对于实现像 Consumer 这样的库类型的 lambdas,工作区中接受 (T) 的调用者数量可能很容易变得难以管理,类似于通过 Runnable.run() 进行的任何调用层次结构——但这没有问题通过 lambda 调用层次结构的一般用途。
我并不真正关心 lambda 内部,不知何故其他 IDE 能够显示预期的堆栈跟踪
解决方案
2016 年报告的 Eclipse存在一个现有的旧错误,仍处于 NEW 状态
错误 498498 - [1.8][search][call hierarchy] 没有使用 lambdas
bar 方法上的调用层次结构正确显示了接受中的用法,而接受没有显示用法。这个问题已经出现在火星上。
有 3 票可以修复它,你也可以投票
从您的编辑链接中,有另一个相关的旧错误处于新状态
错误 468561 - [搜索]调用层次结构停止在双重嵌套的 lambda 链中搜索
也有3票...
推荐阅读
- java - 如何写在运算符大小写之后的其他值上?
- mysql - Typeorm 批量更新 - 仅在正文中存在时更新
- c++ - 空函数的stackoverflow
- spring-boot - 从 Spring Boot 在 Cosmos DB 中自动生成 id
- javascript - 在 Rails 6 中安装 bootstrap-table-rails
- java - keycloak:检查旧密码是否匹配,如果匹配,则更改为另一个
- ios - 如何快速防止 UIViewController 的多次推送?
- firebase - 为什么我仍然能够在我的 Google Analytics(分析)仪表板中看到分析数据?
- php - 为什么 PHP 将我的数组识别为标量值?
- python - Numpy索引分配保留连续性?