Java FAQ:内部クラスの制限

Java FAQ:S016 Q-03

class C2008052801 {
    class C2008052802 {
        static {
        }
    }
}

public class C2008052800 {
    public static void main(String[] args) {
        new C2008052801();
    }
}

で、

C2008052800.java:4: 内部クラスが static 宣言を持つことはできません。
        static {
               ^
エラー 1 個
class C2008052811 {
    class C2008052812 {
        class C2008052813 {
        }
        interface C2008052814 {
        }
    }
}

public class C2008052810 {
    public static void main(String[] args) {
        new C2008052811();
    }
}

で、

C2008052810.java:11: 内部クラスが static 宣言を持つことはできません。
        interface C2008052814 {
        ^
エラー 1 個
class C2008052821 {
    class C2008052822 {
        static int x;
    }
}

public class C2008052820 {
    public static void main(String[] args) {
        new C2008052821();
    }
}

で、

C2008052820.java:4: 内部クラスが static 宣言を持つことはできません。
        static int x;
                   ^
エラー 1 個
class C2008052831 {
    class C2008052832 {
        static final int x = 1;
    }
}

public class C2008052830 {
    public static void main(String[] args) {
        new C2008052831();
    }
}

は OK