インナークラスについて

      2018/06/15

Javaのインナークラスについて覚え書き。
「あれ?記述がエラーになる・・・」とか、おっちゃんよくあるので。

特徴

通常はアウタークラスの変数にアクセスできる。
クラスをstaticにするとアウタークラスのメンバ変数にアクセスできない(static変数にはアクセス可能)。
staticのクラスでもアウタークラスのインスタンスを引数で受け取れば、privateメンバにもアクセスできる。

アウタークラスのメンバ変数にアクセスしないなら、明示的にstaticを付ける。
まぁ、この場合はインナーでもない別クラスで良い気がしますが・・・

生成

アウタークラスからの生成

new {インナークラス}();

InnerClass innerCls = new InnerClass();

外部クラスからの生成

{アウタークラス インスタンス}.new {インナークラス}();

OuterClass.InnerClass innerCls = new OuterClass().new InnerClass();

または

OuterClass outerCls = new OuterClass();
InnerClass innerCls = outerCls.new InnerClass();

 - Java