Java/Eclipse:"Lambda表达式不能用于评估表达式"

mrb*_*ela 17 java eclipse lambda

我写了下面的lambda表达式

int size = ((List<?>) receipt.getPositions().stream().filter(item -> true).collect(Collectors.toList())).size()
Run Code Online (Sandbox Code Playgroud)

变量size计算正确!

但是当我尝试检查它(Ctrl+ Shift+ I)或尝试在Eclipse表达式视图中查看表达式的结果时,我收到以下错误:

"Lambda表达式不能用于评估表达式"

在此输入图像描述

有没有其他机会看到这样的表达式的结果而不是将其存储到变量?

PS:我使用的是Java 8和Eclipse neon.2

Jan*_*ler 2

一个简单有效的解决方案是在匿名类创建中转换 lambda。创建所需接口的变量,您将获得可调试的表达式。

    Predicate<Object> predicate = new Predicate<Object>() {
        @Override
        public boolean test(Object item) {
            return true;
        }
    };
    int size = ((List<?>) receipt.getPositions().stream().filter(predicate).collect(Collectors.toList())).size();
Run Code Online (Sandbox Code Playgroud)

现在,如果您在调试时站在“int size = ...”行,您可以查看以下结果:

((List<?>) receipt.getPositions().stream().filter(predicate).collect(Collectors.toList())).size()
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助:)