doX(name)); 现在我需要向 name 变量添加一些逻辑: -6ren">
gpt4 book ai didi

java - CompletableFuture.runAsync(() ->... 带有非最终变量

转载 作者:行者123 更新时间:2023-11-30 01:55:49 28 4
gpt4 key购买 nike

我的代码运行良好:

String name = "Oscar";
CompletableFuture.runAsync(() -> doX(name));

现在我需要向 name 变量添加一些逻辑:

String name = "Oscar";
if (x){
name = "Tiger";
}
CompletableFuture.runAsync(() -> doX(name));

但是现在编译器提示lambda 表达式中使用的变量应该是final 或有效final

我从像this one这样的帖子中了解到name 必须是 final 或实际上是final,但我想知道是否有一种方法可以以不同的方式编写代码,以便启用 name< 上的逻辑 变量

最佳答案

您可以使用条件运算符,如下所示:

        boolean condition = true;
String name = condition ? "Tiger" : "Oscar";
CompletableFuture.runAsync(() -> System.out.println(name));

或者使用 if 语句:

 boolean condition = true;
final String name;
if(condition) {
name = "Tiger";
}else {
name = "Oscar";
}
CompletableFuture.runAsync(() -> System.out.println(name));

关于java - CompletableFuture.runAsync(() ->... 带有非最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54551810/

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