0
  • 最佳答案

    实际上 这个问题也不一定要加final修饰。如果你的jdk版本1.8 是不用加final的。

    final的作用是确保内存中变量指向的内存地址不变,也就是说final修饰的变量不能再修改或者指向另一个对象了。这样就能确保匿名内部类在执行代码的时候变量所代表的是同一个东西。如果不是一个东西的话就会导致程序运行的结果与预期不同。

    但是有的时候我们希望点击事件里面修改外部变量的值,比如我希望点击这个按钮的时候,这个时候他就会建议你用数组。数组是同一个,但是数据里面的变量是可以修改的。还有一个方法就是把例题中的test设置为全局变量。

    另外jdk1.8可以不加final的原因是编译器底层加了final

    1195567795522260992  评论     打赏       ls666
    • 断点-含光君  回复 @ls666
      其实final和匿名内部类,在编译代码之后,是把参数传递进对象中。 这个可以编译代码后,反编译看最后生成的代码,或者看字节码,就知道真实的代码是怎么处理的了。 至于为啥不能修改,安全考虑吧
      断点-含光君 2020-11-09 11:14   回复 1139423796017500160
相关问题
幻影~ · 安卓
2024-04-26 19:25 9 4
deanhu · AOSP
2024-04-25 21:53 3 10
幻影~ · 提问
2024-04-13 20:13 10 2
幻影~ · 找工作
2024-04-07 10:44 18 2
幻影~ · 问题
2024-03-31 17:20 7 2
TONYGFX · AOSP
2024-03-28 17:11 4 2