今日、静的なネストされたクラスについて読んでいましたが、以下のコードのために少し混乱しています。
class testOuter {
int x;
static class inner {
int innerVar;
public void testFunct() {
x = 0; // Error : cannot make static reference to non static field
innerVar = 10;
outerFunc(this);
}
}
static void outerFunc(SINGLETON s) {
}
}
ネストされた静的クラスについて私が理解したことは、それが外部クラスの静的メンバーのように動作することです。静的変数のみを参照でき、静的メソッドを呼び出すことができます。上記のコードから、エラー atx=0
は問題ありません。
しかし、私が混乱しているのは、それが静的ブロックのように動作する場合、静的ではないinnerVarを変更できることと、このポインターをどのように持つことができるかということです。したがって、ネストされたクラスが静的である場合、メソッドは暗黙的に静的であるか、静的ではありませんか?