You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java类中将自身实例声明为static静态成员的作用是什么

关于static MainWindow frame = new MainWindow()的作用说明

你可以先执行这段代码验证运行顺序,输出结果为:

this is the constructor.
this is main method.

出现该输出的原因是静态成员变量的初始化优先级高于main方法,在类被加载到JVM时就会完成实例创建。

核心设计用途

  • 最核心的目的是实现饿汉式单例模式,保证整个程序生命周期内,MainWindow类只有唯一一个全局可访问的实例
  • 后续程序中所有需要操作主窗口的逻辑,都可以直接通过MainWindow.frame获取到同一个主窗口对象,不需要重复创建实例,也不需要在不同模块之间传递主窗口引用,降低代码耦合度

现有代码的不规范说明

标准的饿汉式单例一般会额外做两个优化:

  1. 将构造方法修饰为private,禁止外部随意调用构造方法创建新的MainWindow实例,彻底避免多实例问题
  2. 给静态frame变量增加final修饰,避免运行时被意外赋值为其他对象

你看到的这段简化代码没有做以上限制,应该是原开发者出于精简代码的需求省略了,核心设计思路还是单例。


内容的提问来源于stack exchange,提问作者john_liopesi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:09:01