我有两个功能。它们如下
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] 删除。
我来说两句