非实例化类中的静态变量是否会通过调用Toolkit来初始化?
问题描述:
我希望能够在程序中调整点击间隔,如果用户希望这样做,那么类ClickAdjustmentFrame
将被实例化。非实例化类中的静态变量是否会通过调用Toolkit来初始化?
在唯一可以更改其值的类中初始化CLICK_FREQUENCY
似乎是明智的做法。所以,该类这样开始的:
public class ClickAdjustmentFrame {
static int CLICK_FREQUENCY = ((Integer)Toolkit.getDefaultToolkit()
.getDesktopProperty("awt.multiClickInterval"));
由于该类并不总是实例化,该类现在从GUI类,在这里我提出问题的语句导入的CLICK_FREQUENCY
值。 (即,GUI现在是这样开始的:)
public class GUI {
static int CLICK_FREQUENCY = ((Integer)Toolkit.getDefaultToolkit()
.getDesktopProperty("awt.multiClickInterval"));
但是调试过程中进行改变,之前,它似乎是在调用Toolkit
正在取得哪怕ClickAdjustmentFrame
没有被实例化。起初这并不奇怪。然后我开始质疑设计,并将呼叫转到Toolkit
到GUI。
它不会在我的应用程序方面的事情了,但备案和教育目的,如果Toolkit
呼叫作了无处,岂不的CLICK_FREQUENCY
值进行计算,并提供给包的其余部分即使类ClickAdjustmentFrame
(如下所示)未被实例化?
public class ClickAdjustmentFrame {
static int CLICK_FREQUENCY = ((Integer)Toolkit.getDefaultToolkit()
.getDesktopProperty("awt.multiClickInterval"));
...
我知道我可以在非实例化类调用一个static
方法(和这样做的相当频繁),但是这是关于static
变量通过一个static
方法在其他地方调用初始化。
究竟什么是非常基本的原则适用于此?是否所有类的所有static
成员都可用于包中的其他类?
也许更好的问题是:是不是更明智的(更好的设计)将呼叫转移到Toolkit
回到ClickAdjustmentFrame
,唯一的类,其中的CLICK_FREQUENCY
值可以改变?
- 该链接非常好。谢谢。这确实是一个非常基本的问题,不是。很明显,现在我已经阅读了链接。 – DSlomer64 2015-03-02 23:07:11