【发布时间】:2020-11-07 01:20:14
【问题描述】:
Result result = ParcelFromDB.getParcelcodes
.stream()
.filter( itr -> itr.getCode().equals(parcelReq.getCode())
.findAny()
.orElse(null);
if(result == null){ ... }
在此之后,我必须采用来自 DB 的现有代码,并在此基础上继续执行其余逻辑。
我无法获取“itr”值,因为它是最终变量。请建议是否有任何替代方法可以在 lamda 之外携带“itr”的值?我尝试了其他方法,但根据代码库,这是我应该做的唯一方法。
【问题讨论】:
-
您能否格式化您的代码并提供更多详细信息
-
如果你想使用内部代码中的一些内部变量,你不应该使用 lambda,而是使用经典循环。但更好的是,重新考虑你的逻辑,这样就不需要这种访问了。
-
请更清楚一点,带出 lambda 是什么意思?你想要
itr -> someVariableOutsideLambda = itr这样的东西吗? -
为什么不使用
result变量?如果您对不匹配的元素感兴趣,只需反转过滤条件即可。
标签: java filter collections java-8