非实例化 class 中的静态变量是否会通过调用 Toolkit 进行初始化?

Will static variable in non-instantiated class be initialized via call to Toolkit?

我希望能够在用户希望的情况下调整程序中的点击间隔,此时 class ClickAdjustmentFrame 将被实例化。

在唯一可以更改其值的 class 中初始化 CLICK_FREQUENCY 似乎是明智的。所以 class 是这样开始的:

public class ClickAdjustmentFrame {

    static int CLICK_FREQUENCY = ((Integer)Toolkit.getDefaultToolkit()
      .getDesktopProperty("awt.multiClickInterval"));

因为 class 并不总是实例化,所以 class 现在从 GUI class 导入 CLICK_FREQUENCY 的值,我在其中移动了相关语句. (即,GUI 现在是这样开始的:)

public class GUI {

   static int CLICK_FREQUENCY = ((Integer)Toolkit.getDefaultToolkit()
          .getDesktopProperty("awt.multiClickInterval"));

但在进行更改之前,在调试过程中,似乎正在调用 Toolkit,即使 ClickAdjustmentFrame 尚未实例化。起初这并不奇怪。然后我开始质疑设计,因此将对 Toolkit 的调用移至 GUI。

这对我的应用程序而言不再重要,但出于记录和教育目的,如果对 Toolkit 的调用不是在其他任何地方进行的,那么 CLICK_FREQUENCY 的价值会是即使未实例化 class ClickAdjustmentFrame(如下所示),已计算并可供包的其余部分使用?

public class ClickAdjustmentFrame {

    static int CLICK_FREQUENCY = ((Integer)Toolkit.getDefaultToolkit()
      .getDesktopProperty("awt.multiClickInterval"));
...

我知道我可以在非实例化 class 中调用 static 方法(并且经常这样做),但这是关于 static variables 通过调用其他地方的 static 方法进行初始化。

究竟什么最基本的原则适用于此?任何 class 的所有 static 成员是否对包中的其他 class 可用?

也许更好的问题是:将对 Toolkit 的调用移回 ClickAdjustmentFrame 是否更明智(更好的设计),唯一的 class 其中 CLICK_FREQUENCY可以改变?

静态字段在 class 第一次被 class 加载程序加载时初始化。参见 this SO

例如,如果访问 class ClickAdjustmentFrame 的静态字段,则没有实例,但会发生 class 的所有静态初始化。