是否可以在Java 8中调试Lambdas

mw8*_*w88 6 java debugging lambda netbeans java-8

我刚开始玩Java 8 Lambdas,我注意到我无法在NetBeans IDE中调试它们.如果我尝试将断点附加到以下代码,我会得到一个变量断点,这绝对不是我想要的:

private EventListener myListener (Event event) ->
{
  command1;
  command2; // Set Breakpoint here
  command3;
};
Run Code Online (Sandbox Code Playgroud)

NetBeans将调试器附加到"myListener"变量,但我无法进入EventListener本身,因此我无法看到其中发生的事情.

是否缺少调试信息,这是NetBeans中缺少的功能还是完全无法在Java中调试Lambdas?

Jon*_*eet 5

它适用于Eclipse.例如:

public class Foo {

    private static final Runnable r1 = () -> {
        System.out.println("r1a");
        System.out.println("r1b");
    };

    public static void main(String[] args) {
        Runnable r2 = () -> {
            System.out.println("r2a");
            System.out.println("r2b");
        };

        r1.run();
        r2.run();
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在这两种添加断点到各行r1,并r2和他们得到适当的打击,步进等.

如果我只在run()调用上设置断点,我也可以进入相关的lambda表达式.

所以听起来所有调试信息至少可以使用.

编辑:显然上面也在Netbeans中工作 - 我建议你尝试检查一下你是否能够正常工作.