public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz;
public MainMDI() {
initComponents();
thiz = this;
}
}
Swing で MDI アプリケーションを作成しています。クラス MainMDI はアプリケーションのメイン クラスであるため、メイン メソッドはそのクラスに存在します。上記のコードは、アプリケーションの実行時に MainMDI クラスのインスタンスを指す thiz という名前の静的変数を作成します。
変数 thiz を使用して、メイン メソッド内からクラス MainMDI の非静的 (インスタンス) メンバーにアクセスすることを計画しています (メイン メソッドはクラス内の静的メンバーであるため、メイン メソッド内から非静的メンバーにアクセスすることはできません)。アプリケーションの MainMDI)。
public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz = this;
public MainMDI() {
initComponents();
}
}
しかし、上記のコードのように変数 thiz を初期化しようとすると、コンパイラは非静的変数 this は静的コンテキストから参照できないと言います。しかし、私はこれを静的な文脈で言及しているのではありませんか? これは、変数 this が非静的であるため、静的変数 this が初期化されるときにまだ初期化されていないためですか?
また、クラス MainMDI をメイン クラスとして設定せずに、メイン メソッドを含む別のクラスを作成し、そのクラスをメイン クラスとして設定した方が、より良いプログラミング プラクティスになるでしょうか?