JDK1.0 では、クラス定義の内部にクラス定義を記述することはできませんでした。
JDK1.1 から、クラスの内部にさらにクラス定義を行う Innerクラスの機能が
追加されました。たとえば、次のような記述が可能です。
/** Inner Class の実験をする InnerTest クラス */
public class InnerTest {
/** 最初に呼び出されるメソッド */
public static void main( String argv[] ) {
/** メソッドの内部で定義された Inner Class */
class LocalClass {
public void printMessage() {
System.out.println( "This is an Local Class" );
}
}
LocalClass local = new LocalClass();
local.printMessage();
}
}
このソースをコンパイルすると、Innerクラスに対応するバイトコードも 生成されます。ただし、バイトコードの名前の衝突を防ぐため、 バイトコードのファイル名には次のような形式で名前が付けられます。
InnerTest$LocalClass.class