プログラムでクリック間隔を調整できるようにしたい場合は、ユーザーがそうしたい場合、その時点でクラス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
戻す方が賢明 (より良い設計)ですか?ClickAdjustmentFrame
CLICK_FREQUENCY