Java/Eclipse:“Lambda 表达式不能在求值表达式中使用”

2022-09-02 14:08:34

我写了下面的lambda表达式

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

变量计算正确!size

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

“Lambda 表达式不能在计算表达式中使用”

enter image description here

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

附言:我正在使用Java 8和Eclipse neon.2


答案 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()

我希望它能帮助:)


答案 2

推荐