0

プログラムでクリック間隔を調整できるようにしたい場合は、ユーザーがそうしたい場合、その時点でクラスClickAdjustmentFrameがインスタンス化されます。

CLICK_FREQUENCY値を変更できる唯一のクラスで初期化するのが賢明と思われました。そのクラスは次のように始まりました:

public class ClickAdjustmentFrame {

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

そのクラスは常にインスタンス化されるとは限らないため、そのクラスはCLICK_FREQUENCY、問題のステートメントを移動した GUI クラスから値をインポートするようになりました。(つまり、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戻す方が賢明 (より良い設計)ですか?ClickAdjustmentFrameCLICK_FREQUENCY

4

1 に答える 1