2016-09-22 75 views
1

我正在尝试调试使用Lambda表达式的简单Java应用程序。我无法使用普通的Eclipse调试器来调试Lambda表达式。如何使用Eclipse在Java 8中调试lambda表达式?

+8

换行符断点和一步一步的调试是基于行号。所以你可能需要在lambda表达式中插入换行符以便能够将它与周围的上下文分开。除此之外,即使Eclipse版本不知道lambda表达式(这完全是关于将行号与源代码文本进行匹配),它的工作没有问题。 – Holger

+3

恕我直言,如果它需要被调试,它不应该是一个lambda,但一个私人的方法... –

+0

也可以考虑在你的流'peek(System.out :: println)'。 –

回答

0

您可以将表达式转换为语句。

List<String> list = new ArrayList<>(); 

// expression 
boolean allMatch1 = list.stream().allMatch(s -> s.contains("Hello")); 
// statement 
boolean allMatch2 = list.stream().allMatch(s -> { 
    return s.contains("Hello"); 
}); 

您现在可以设置在return s.contains("Hello");线

+5

无需将表达式转换为语句。在' - >'之后插入一个换行符就足够了。 – Holger