最終更新:2023-07-05 (水) 16:57:51 (296d)  

インナークラス
Top / インナークラス

Java

  • アウタークラスのフィールド、static変数を参照可能
  • インナークラスでは、final定数以外のstaticなメンバーを持つことが出来ない
    class OuterClass{
        //インナークラス
        class InnerClass{
    
        }
    }

外からアクセス

  • OuterClass.InnerClass i = new OuterClass().new InnerClass() ;
  • or
    Outer outer = new Outer();
    Outer.Inner inner = outer.new Inner();
  • staticなインナークラスの場合
    Outer.Inner s = new Outer.Inner();

関連

final

  • http://homepage1.nifty.com/docs/java/faq/S016.html#S016-14
    ローカルな内部クラスのインスタンスのライフタイム(生成されてからGCされるまでの期間)は、
    それを宣言するブロックやメソッドのライフタイムより長いことがあり、
    その場合、内部クラスから参照しているローカル変数や引数が実際に参照を行なう
    タイミングまで存在し続けていないことがあります。
    そういったケースでも正しく値が参照できることを保証するため、
    参照可能なものを内部クラスが生成される時点以降に値が変更されないもの、
    すなわち、final宣言されているローカル変数や引数のみに制限し、
    その値をコピーしてインスタンス内部に保持するようになっています。
    

参考