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

为什么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 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题