0
私はサーバーを構成するクラスを持っています。サーバーオブジェクトは静的であり、遅延初期化されます。問題は、サーバーの設定の一部が、そのクラスを含む非静的メンバー変数から来ていることです。明らかに、非静的メンバーにアクセスすることはできません。これを回避する方法はありますか?非静的変数を使用してサーバーを構成できますか?サーバーは静的なままでなければなりません。スタティック・レイジー・イニシャライザ
public class ClassA {
private static MyServer myServer;
private int a;
private int b;
public ClassA(int a, int b) {
this.a = a;
this.b = b;
}
public static MyServer getMyServer() {
if(myServer == null) {
myServer = configureServer();
}
return myServer;
}
private static MyServer configureServer() {
MyServer myServer = new MyServer();
myServer.setaPlusB(a + b);
return myServer;
}
}
public class MyServer {
private int aPlusB;
public void setaPlusB(int aPlusB) {
this.aPlusB = aPlusB;
}
}
どうしたらよいですか?あなたの質問は、奇妙で抽象的です。どの非静的変数を使用してサーバーを構成しますか?彼らはどこから来るべきですか?もちろん、非静的変数をパラメータとして 'getMyServer'メソッドに渡すこともできます。しかし、あなたがそれを望まないなら、どこから来るべきですか? –
唯一の方法は、getMyServer関数を呼び出すときにClassAのインスタンスをパラメータとして使用することです。 Btwの "静的な遅延ゲッター"はシングルトンのパターンを呼び出します。 – Armin