美文网首页
匿名内部类问题

匿名内部类问题

作者: Hsicen | 来源:发表于2019-10-24 09:07 被阅读0次

    匿名内部类访问的外部类局部变量为什么要用final 修饰jdk8为啥不需要了

    1. 匿名内部类访问的外部类局部变量为什么要用final 修饰?

    因为匿名内部类使用的是外部类局部变量的值,并非引用;通过反编译可以发现,外部类以及被访问的局部变量会通过构造方法传进去,对于局部变量,内部类使用的引用和外部类使用的并不是同一个,而如果局部变量不是final的话,当其中一方对其重新赋值就会导致内部类和外部类的数据不同步,所以要声明为final

    关于外部类的全局变量为什么不用声明为final,是因为在内部类中是通过this来访问的,这个和外部类是同一个引用

    1. jdk8为啥不需要了?

    jdk8其实使用了语法糖,自动加了final,其实和原来一样

    相关文章

      网友评论

          本文标题:匿名内部类问题

          本文链接:https://www.haomeiwen.com/subject/aqfrvctx.html