Java Gold11の勉強をしていて分からない設問があった。
(使用している参考書は黒本です。)
下記のコードを実行するとどうなるか?
public class Outer{
    void test(){
        Inner.message = "Hello, Java";
    }
    class Inner{
        private static String message;
        public void test(){
            System.out.println(message);
        }
    }
    
    public static void main(String[] args){
        Outer outer = new Outer();
        outer.test();
        outer.new Inner().test();
    }
}
A.「null」と表示される
B. 「Hello, Java」と表示される
C. コンパイルエラーが発生する
D. 実行時に例外がスローされる
正解は....「C. コンパイルエラーが発生する」だそうです。
解説では、
「 (staticではない)インナークラスには、staticなフィールドやメソッドを定義することはできません。これらはあくまでもstaticなネストしたクラスにしか定義できないことに注意してください。反対に、staticなネストしたクラスには、staticなものも、そうでないものも定義できます」
「Outerクラスの中にインナークラスInnerが定義されています。Innerはstaticなネストしたクラスではないため、前述のとおりstaticなフィールドやメソッドは定義できません。」
しかし、手元でコードを動かすと...コンパイルできるやんけ!!

有識者の方、上記教えてください....
