Java类中将自身实例声明为static静态成员的作用是什么
关于
static MainWindow frame = new MainWindow()的作用说明 你可以先执行这段代码验证运行顺序,输出结果为:
this is the constructor. this is main method.
出现该输出的原因是静态成员变量的初始化优先级高于main方法,在类被加载到JVM时就会完成实例创建。
核心设计用途
- 最核心的目的是实现饿汉式单例模式,保证整个程序生命周期内,
MainWindow类只有唯一一个全局可访问的实例 - 后续程序中所有需要操作主窗口的逻辑,都可以直接通过
MainWindow.frame获取到同一个主窗口对象,不需要重复创建实例,也不需要在不同模块之间传递主窗口引用,降低代码耦合度
现有代码的不规范说明
标准的饿汉式单例一般会额外做两个优化:
- 将构造方法修饰为
private,禁止外部随意调用构造方法创建新的MainWindow实例,彻底避免多实例问题 - 给静态
frame变量增加final修饰,避免运行时被意外赋值为其他对象
你看到的这段简化代码没有做以上限制,应该是原开发者出于精简代码的需求省略了,核心设计思路还是单例。
内容的提问来源于stack exchange,提问作者john_liopesi
相关产品推荐
相关产品推荐

