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

匿名内部类问题

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

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

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

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

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

  1. jdk8为啥不需要了?

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

相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java匿名内部类

    导语 学完匿名内部类就懂的情书。 主要内容 接口与抽象类和匿名内部类的关系 具体内容 匿名内部类也就是没有名字的内...

  • java中的匿名内部类总结

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内...

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • 技术问 - 匿名内部类

    匿名内部类 匿名内部类的格式 匿名内部类的本质是什么? 代码: 匿名内部类在开发中使用: 看结果写代码

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • Android菜鸟起飞|三种方法实现监听事件

    Android实现监听事件的三种方式(匿名内部内实现,外部类实现,接口实现)详解 1. 使用匿名内部类的方式实现监...

  • Java 8 Lambda表达式

    匿名内部类的一个问题是:当一个匿名内部类的实现非常简单,比如说接口只包含一个函数,那么匿名内部类的语法有点笨拙且不...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • 匿名内部类问题

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

网友评论

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

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