我有两个功能。具体如下:,
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;
}
如您所见,这两个函数都有一个类的返回类型 Post
并在简单检查后返回同一类的对象。第一个函数运行良好,没有任何错误,而第二个函数给我一个 Unexpected return value
尝试返回时出错 thePost
.
你能告诉我是什么导致了这个错误,我哪里出错了吗?
1条答案
按热度按时间xfb7svmp1#
问题是使用
return
从lambda表达式内部返回lambda。你的forEach
期望Consumer<Post>
,这通常是void
. 可以提供一个lambda,该lambda返回一个预期为void的值(该值只是被忽略),但是您只返回一个匹配的值,然后继续执行return null
无条件地。如果要使用lambda,请使用lambda样式:
(还要注意的是,在比较
Long
由==
; 上面的代码处理这个问题。)