Thecoastlines 2022-05-17 17:45 采纳率: 73.7%
浏览 54
已结题

为什么lambda中使用for循环的变量还需要转换为final呢

img

上面必须修改为下面这样才是正确的,这是为什么呢? 从lambda 表达式引用的本地变量必须是最终变量或实际上的最终变量?

img

  • 写回答

3条回答 默认 最新

  • 皮蛋不吃粥 2022-05-18 09:49
    关注

    在Java规范中提到

    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.

    大概意思是 Lambda 表达式中要用到的,但又未在 Lambda 表达式中声明的变量,必须声明为 final 或者是 effectively final,否则就会出现编译错误

    简单说就是Lambda使用的局部变量,不希望是外部能修改,修改都是值的修改,这里的值是值传递,对于基本数据类型、包装类、String不可被修改内容,其他引用类型不能修改地址。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目
  • ¥15 利用pthon计算薄膜结构的光导纳