为什么局部内部类必须为final类型

第一种说法

原因

主要是因为实现的代价太高

困难

局部变量的生命周期和局部内部类的生命周期不同

详解

  • 局部内部类的生命周期是和其他类一样的,都是当再也没有对象的引用的时候才会结束生命周期。
  • 但是局部变量的作用域是不一样的,当方法或者作用域结束的时候局部变量的生命周期就结束了
  • 如果当局部内部类访问一个局部变量的时候可能出现局部内部类还在但是局部变量已经被销毁了
  • 这个时候还要讲到final的机制,在编译期,当程序中某一个地方用到final类型的变量的时候,这个时候编译器会自动在用到final类型的变量的地方拷贝一份新的final类型的变量,这个新的变量是和原来的变量不在同一个内存地址的,所以当原本的final变量销毁的时候这个变量还在。
  • Java的作者就利用final类型变量的这个特性来解决了这个问题。

第二种说法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容