トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Javaの内部クラス

http://javafaq.jp/S016.html

大まかに

class TopLevelClass {                       // トップレベル型
   static class StaticMemberClass {}       // staticなメンバー型

   class NonStaticMemberClass {}           // 非staticなメンバー型

   static {
class StaticInitializerLocalClass {}    // ローカルクラス
   }

   {
class InstanceInitializerLocalClass {}  // ローカルクラス
   }

   static void staticMethod() {
class StaticMethodLocalClass {}         // ローカルクラス

Runnable staticAnonymousClassInstance =
    new Runnable() {                    // 匿名クラス
	public void run() {}
    };
   }

   void method() {
class MethodLocalClass {}               // ローカルクラス

Runnable anonymousClassInstance =
    new Runnable() {                    // 匿名クラス
	public void run() {}
    };
   }
}

これらの型の分類を示したのが以下の図です。

[型](注1)
 │
 ├[トップレベル型]
 │
 └[ネストした型]
       │
       ├[メンバ型]
       │    │
       │    ├[staticなもの]
       │    │
       │    └[staticでないもの]
       │
       ├[ローカルクラス]
       │
       └[匿名クラス]


内部クラスから外側のクラスのメソッドや変数を明示的に参照するにはどうすれば良いのですか?


[S016 A-10]
それぞれ、「クラス名.this.メソッド名」、「クラス名.this.変数名」とします。


ネストした型を他のクラスから new するにはどうすれば良いのですか?

[S016 A-11]
staticなメンバ型の場合はnew Outer.Inner()のように、
それ以外の場合(内部クラスの場合)はそれを囲うクラスのインスタンスを用いて
outer.new Inner()のようにします。

[カテゴリ: プログラミング言語 > Java]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2010年10月09日 01時17分57秒