Eclipse - `open call hierarchy`停止在lambda链中搜索

and*_*dyf 20 java eclipse lambda call-hierarchy

这是我的示例java代码:

public class Test {

    public static void main(String[] args) {
        methodDepth0(
            ()->
                methodDepth1(
                    ()->
                        methodDepth2()
                )
        );
    }

    static Object methodDepth2() {
        return null;
    }

    interface MyIF {
        void call();
    }

    static void methodDepth0(MyIF myIf){
        myIf.call();
    }

    interface MyIF2 {
        void call();
    }

    static void methodDepth1(MyIF2 myIf2){
        myIf2.call();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我methodDepth2()从Eclipse(4.4)打开方法的调用层次结构时, open call hierarchy停止搜索下一个调用者: 打开调用层次结构停止搜索下一个调用方法

我期望的是打开方法的调用层次结构,methodDepth1()直到该main方法. 打开方法<code> methodDepth1()</ code>的调用层次结构,直到<code> main </ code>方法显示

Voi*_*paw 2

据我所知,缺乏调用层次结构深度是由于在运行时对代码进行(重新)评估造成的。Java 语言规范中的15.27.4 Lambda 表达式的运行时求值对此进行了解释。

在运行时,lambda 表达式的求值类似于类实例创建表达式的求值,只要正常完成会生成对对象的引用。lambda 表达式的求值与 lambda 主体的执行不同。