Local variable flag defined in an enclosing scope must be final or effective
转载 原文链接:https://blog.csdn.net/weixin_38883338/java/article/details/89195749
Java8在 lambda 表达式中使用局部变量会提示:Local variable flag defined in an enclosing scope must be final or effectively final
这是因为你使用的局部变量在初始化后,又对这个变量进行了赋值。赋值后会认为这个变量不是final了,所以报错,针对这个问题可以有以下几种解决办法。
法一:
List<String> list = new ArrayList<String>();
list.add("name");
list.add("age");
list.add("address");
boolean flag = true;
flag = false;
boolean newFlag = flag;
list.stream().forEach(e -> {
if (newFlag) {
System.out.println(e);
}
});
即将你想要使用的局部变量,在使用前赋值给一个新的变量,这样java8会认为这个新的变量是final,没有变化的,可以使用。
法二:
List<String> list = new ArrayList<String>();
list.add("name");
list.add("age");
list.add("address");
boolean[] flag = {true};
flag[0] = false;
list.stream().forEach(e -> {
if (flag[0]) {
System.out.println(e);
}
});
将你需要的值放到一个数组里,也可以使用。
此外放到map或是list里都可以
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!