返回相同返回类型的对象会产生语法错误

迈克·斯宾塞

我有两个功能。它们如下

public Post findById(Long id){
    for (Post thePost : ALL_POSTS) {
        if(thePost.getId()==id){
            return thePost;
        }
    }
    return null;
}


public Post findById_Two(Long id) {
    ALL_POSTS.forEach((thePost) -> {
        if(thePost.getId()==id){
            System.out.println(thePost.getId()==id);
            return thePost;
        }
    });
    return null;
}

如您所见,这两个函数都有一个类的return Type,Post并在简单检查后返回相同类的对象。第一个函数可以正常工作而没有任何错误,而第二个函数Unexpected return value在尝试返回时给了我一个错误thePost

您能否让我知道造成此错误的原因以及我哪里出错了?

克莱里斯-谨慎乐观-

的问题是,使用return从lambda表达式返回内部从拉姆达forEach期望的aConsumer<Post>通常是void可以提供一个lambda来返回预期的void值(忽略该值),但是您只在有匹配项的情况下返回值,然后您将return null无条件地进行返回

如果要使用lambda,请使用lambda样式:

public Post findById_streams(Long id) {
  return ALL_POSTS.stream()
    .filter(post -> id.equals(post.getId()))
    .findFirst()
    .orElse(null);
}

(还请注意,您在Long按by进行比较时有一个错误,==上面的代码可以解决该问题。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章