【问题标题】:Unable to debug Lambda Expression IntelliJ Ultimate 2018.1无法调试 Lambda 表达式 IntelliJ Ultimate 2018.1
【发布时间】:2026-01-26 16:35:01
【问题描述】:

我在调试模式下运行 Junit 测试用例,它适用于正常的方法调用。当我尝试调试 lambda 表达式时,控制不会进入内部。

我尝试安装 Java Stream Debugger,但尚未扩展对 IntelliJ Ultimate 2018.1 IDE 的支持

public TestLambda lambdaExpression() {
        int width=10;
        TestLambda d2;
        //with lambda
        return d2=()->{
            System.out.println("Drawing "+width);
            System.out.println("Drawing1 "+width);
            System.out.println("Drawing2 "+width);
        };
    }

我希望调试器指向每个 sysout 语句。我可以使用 Eclipse 调试相同的表达式。

【问题讨论】:

  • 只有当TestLambda接口中声明的方法被实际调用时,控件才会进入lambda体。在您显示的代码中,这不会发生。

标签: java debugging intellij-idea lambda java-8


【解决方案1】:

根据评论,我更新了代码并且运行良好。我的实际问题与通过 spring 进行的 Bean 初始化有关,因此没有在 Config 文件中写入执行。因此调试器没有进入。

更新代码:

public void lambdaExpression() {
        int width=10;
        //with lambda
        TestLambda d2=()->{
            System.out.println("Drawing "+width);
            System.out.println("Drawing "+width);
            System.out.println("Drawing "+width);
        };

        d2.draw();
    }

【讨论】: