已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
两年前关闭了。
Improve this question
Result result = ParcelFromDB.getParcelcodes
.stream()
.filter( itr -> itr.getCode().equals(parcelReq.getCode())
.findAny()
.orElse(null);
if(result == null){ ... }
在此之后,我必须从DB中获取现有代码,并在此基础上继续执行其余的逻辑。
我无法获取“itr”值,因为它是一个最终变量。请建议是否有任何替代方法将“itr”的值传递到lambda之外?我尝试过其他方法,但根据代码库,这是我应该做的唯一方法。
2条答案
按热度按时间cl25kdpy1#
Lamba表达式is是匿名的,但仍然是 * 方法 *,一个 * 匿名方法 *。
在方法范围内声明的变量是该范围的局部变量,无法在该范围外引用它们。
tzdcorbm2#
lambda表达式中的
itr
表示流中的一个项。其中一个项(由于您使用了findAny
)作为result
变量返回,您可以稍后使用它。您可以使用forEach
并对所有元素进行操作,而不是仅仅终止流: