gpt4 book ai didi

java - 如何在不将变量重新分配给最终变量的情况下使用 lambda?

转载 作者:行者123 更新时间:2023-11-29 06:30:34 25 4
gpt4 key购买 nike

我总是必须将我的变量重新分配给另一个标记为 final 的变量:

public void method(int myvar) {

myvar = myvar + 1;

doSomething(myvar); //I need to change myvar before the lambda

final int newvar = myvar; //this line is stupid
//could be something like:
//makefinal myvar;

open(con -> {
doOtherThing(newVar);
});
}

如果有另一种方法可以声明我的变量在 open 调用之前不会更改,那就太好了。

最佳答案

你不能。这在 JLS section 15.27.2 中明确指定:

Any local variable, formal parameter, or exception parameter used but not declared in a lambda expression must either be declared final or be effectively final (§4.12.4), or a compile-time error occurs where the use is attempted.

但是,您可以将示例重写为以下内容:

public void method(int myvar) {
final int newvar = myvar + 1;
doSomething(newvar);
open(con -> doOtherThing(newvar));
}

我们只是声明一个 final 变量 newvar ,它将被重用。

关于java - 如何在不将变量重新分配给最终变量的情况下使用 lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35464385/

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