博客
关于我
记final与静态内部类的疑惑
阅读量:324 次
发布时间:2019-03-04

本文共 618 字,大约阅读时间需要 2 分钟。

为什么要把内部类声明为静态的?

在Java中,内部类默认是非静态的,意味着它会受到外部类实例化的影响。每当外部类创建一个实例时,内部类也会创建一个实例。如果内部类不是静态的,那么外部类的每个实例都有自己的内部类实例,这样在访问内部类的成员时,可能会有多个单例对象被创建,导致单例模式失效。

为了避免这种情况,内部类必须声明为静态。静态的内部类不会随着外部类实例的创建而创建实例,它们可以独立存在。这确保了内外类之间的依赖关系被消除,从而避免内存泄漏和单例模式不稳定的问题。

为什么静态类里获取单例对象要用final修饰?

在静态类中获取单例对象时,final修饰是为了确保单例对象在定义后不能被修改。这意味着一旦single变量被赋值,就不能被其他地方修改,保证了单例对象的唯一性和稳定性。如果不用final,可能会有多个线程在同一个时间修改single变量,导致并发问题,破坏单例模式的正确性。

为什么内部类也得声明为静态的?

当使用内部类.内部类的变量方式获取单例时,内部类必须声明为静态。否则,非静态内部类的成员不能定义为静态,会导致作用域混乱。非静态内部类依赖于外部类的实例化,如果成员变量或方法定义为静态,那么它们的作用域就变成了类级别的,不依赖于实例化,这会造成作用域冲突。

总结来说,内部类必须声明为静态以确保单例模式的正确性,final修饰用于保护单例变量不被修改。通过这些措施,Java确保了单例模式的高效性和安全性。

转载地址:http://bifh.baihongyu.com/

你可能感兴趣的文章
python基础实践(四)
查看>>
Python基础学习笔记(九)常用数据类型转换函数
查看>>
Python基础学习参考(五):字符串和编码
查看>>
Python基础学习
查看>>
python基础变量之---集合
查看>>
python基础变量之---字典
查看>>
python基础变量之---列表
查看>>
python基础变量之---元组
查看>>
python基础内容_Python基础入门必须了解的
查看>>
Python基础之面向对象2(封装)
查看>>
Python在def函数中使用for循环
查看>>
Python图像处理:从内存加载jpeg
查看>>
python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
查看>>
python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
查看>>
python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
查看>>
Python哪个版本最稳定好用2023.10.19
查看>>
python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
查看>>
Python命名中尾随下划线有什么好处?
查看>>
Python启动脚本
查看>>
python吊打Excel?屁!那是你不会用!
查看>>