java 有没有其他方法可以将lambda变量带出lambda循环[closed]

oipij1gg  于 2022-12-17  发布在  Java
关注(0)|答案(2)|浏览(127)

已关闭。此问题需要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之外?我尝试过其他方法,但根据代码库,这是我应该做的唯一方法。

cl25kdpy

cl25kdpy1#

Lamba表达式is是匿名的,但仍然是 * 方法 *,一个 * 匿名方法 *。
在方法范围内声明的变量是该范围的局部变量,无法在该范围外引用它们。

tzdcorbm

tzdcorbm2#

lambda表达式中的itr表示流中的一个项。其中一个项(由于您使用了findAny)作为result变量返回,您可以稍后使用它。您可以使用forEach并对所有元素进行操作,而不是仅仅终止流:

ParcelFromDB.getParcelcodes()
            .stream()
            .filter( itr -> itr.getCode().equals(parcelReq.getCode())
            .forEach(itr -> {
                // Do something interesting with the item
            });

相关问题