Intellij中的Java Lambda:期望不为null,但lambda主体不是值兼容的

Thi*_*aku 2 lambda java-8

尝试使用流过滤集合,并尝试将以下lambda传递给filter()一个Set,它在标题中给出了一个神秘的错误:

unmatchedIncomingFields.stream().filter(s-> s.matches(fieldMatchPattern))
Run Code Online (Sandbox Code Playgroud)

同时,创建Predicate对象有效:

unmatchedIncomingFields.stream().filter(new Predicate<String>() {
    @Override
    public boolean test(String s) {
        return s.matches(fieldMatchPattern);
    }
});
Run Code Online (Sandbox Code Playgroud)

根据JLS,如果每个控制路径返回一个值,则lambda主体是"值兼容的".matches()总是被调用并且总是返回一个布尔值,所以我不明白问题是什么.

我也尝试了相同lambda的各种变体 - 有和没有括号和参数类型,并使用表达式和块返回体.

Thi*_*aku 7

这个问题看起来是不正确的,或者至少有些误导,IntelliJ中的错误突出显示,令实际错误的位置混淆.

过滤器发生在另一个lambda中,用于map()操作,我还没有指定返回,并且由于某种原因,IntelliJ突出显示过滤器的内部lambda,使其看起来像是带有错误的那个.