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

时间:2017-02-20 13:43:22

标签: java eclipse lambda

我写了以下lambda表达式

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

正确计算变量size

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

“Lambda表达式不能用于评估表达式”

enter image description here

是否还有其他机会可以查看此类表达式的结果,而不是将其存储到变量中?

P.S。:我正在使用Java 8和Eclipse neon.2

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案,可以在匿名类创建中转换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();

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

((List<?>) receipt.getPositions().stream().filter(predicate).collect(Collectors.toList())).size()

我希望它有所帮助:)