使用lambda解释Java堆栈跟踪,如“引用”;。lambda$null$2“&;及$$Lambda$”;

使用lambda解释Java堆栈跟踪,如“引用”;。lambda$null$2“&;及$$Lambda$”;,java,exception,logging,lambda,stack-trace,Java,Exception,Logging,Lambda,Stack Trace,我正在寻找Java8堆栈跟踪中lambda周围发生的部分的定义 例如,此代码 Object inputData = someData(); myList.stream().forEach(listItem -> { Query query = (Query) listItem.getSingle().apply(this.getId()); Object data = diffUtils.applyProjection(query, inputData);

我正在寻找Java8堆栈跟踪中lambda周围发生的部分的定义

例如,此代码

Object inputData = someData();

myList.stream().forEach(listItem -> {

    Query query = (Query) listItem.getSingle().apply(this.getId());

    Object data = diffUtils.applyProjection(query, inputData);

    myStringCollection.stream()
       .filter(destination -> myPredicateMethod(listItem, destination))
       .forEach(destination -> myProcessMethod(destination, data));
}
有时会产生这种异常

at [CLASS].lambda$null$2([CLASS].java:85)
at [CLASS]$$Lambda$64/730559617.accept(Unknown Source)
例外情况中描述的不同部分是什么?“空”、“2”、“64”、“730559617”和“未知来源”告诉我什么


在这里可以找到一个更详细的示例(但在这里,我上面的异常中的“null”不存在)

此生成的类名没有标准定义。这是为了避免您编写依赖于它的代码,从而使设计人员以后更难修改它

话虽如此,你能读的很少的东西是

  • 类名的第一部分是调用站点的类
  • 最后一个
    $
    之前的数字是lambda的全局计数器。这取决于lambdas代码的生成顺序
  • 大的数字是一个生成的id。对于同一个lambda,每次运行时它都是不同的,但启动后不会改变
“未知源”告诉您生成的代码没有与之关联的调试信息

我们正在寻找一个库,用于更改lambda的toString,从而让您了解与之相关的代码。i、 e.至少在琐碎的情况下,它看起来像lambda的代码。

可能重复的