gpt4 book ai didi

java - 在 lambda java 的 lambda 表达式范围之外更改变量

转载 作者:行者123 更新时间:2023-11-30 06:44:16 26 4
gpt4 key购买 nike

我有一个发送到另一个函数的 lambda 函数,我想在 lambda 中更改在 lambda 范围之外声明的变量。

    WebElement  textArea ;
BrowserToucher.clickOnWebElement(() -> {
WebElement convPopupOrCard = findElementBy(driver,
conversationCardOrPopup);
return textArea = findSubElementBy(driver, convPopupOrCard,
CardAndPopupTextArea);
}, driver);
BrowserToucher.sendKeys(textArea, driver, text);

我需要更改 labmda 中的“textArea”变量,以便我可以在最后一行使用它的值。

我找到的唯一解决方案是将“textArea”设为大小为 1 的数组。但我真的不明白为什么它有效。如果有人能向我解释一下,我会很高兴。谢谢!!

最佳答案

The only solution i've found is to make 'textArea' an array in size of 1 But I don't really understand why it works.

之所以有效,是因为捕获的数组本身是 finaleffectively final(任何值不变的变量)。

只要捕获的变量是finaleffectively final 更改数组的内容 是完全可以和允许的。

当然,这样的代码不是线程安全的。因此,理想情况下,您在使用此技巧之前应该三思。

关于java - 在 lambda java 的 lambda 表达式范围之外更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50831373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com