プロが教える店舗&オフィスのセキュリティ対策術

Android Studioです。
static なメソッドであるs()の中から非staticのm()を実行する方法を教えてください。

s()を非staticなメソッドにしてはいけない仕様です。
m()をstaticなメソッドにしてはいけない仕様です。

s()の中からm()を実行する時に
m();
だとコンパイルエラーなので、
インスタンス.m();
にしようと思い以下のソースを考えましたが以下のもので実現できるのでしょうか?

class A {

  Instance mInstance = null;

  A() { //コンストラクタかonCreate()のタイミングです
    mInstance = getInstance();
  };

  static void s() {
    mInstance.m();
  };

  void m() {

  };

}

A 回答 (1件)

仮にメソッド m に static と付けてもコンパイルエラーにならないなら、


m は静的メソッドの様なモノなので、インスタンスを適当に作って
(new A()).m();

m が A のインスタンスの状態によらずに動作する保証があるなら、
(new A()).m();

A がシングルトン・パターンに即しているなら、その単一インスタンスを取得して
getInstance().m()

でなければ、メソッド s の A 型の引数に that を付けて
that.m();
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!