Inheriting static protected inner class, javac 报错

Inheriting static protected inner class, wrong complaint by javac

考虑这段代码:

Base.java

package package1;

public class Base<I extends Base.Inner>{
    protected static class Inner{}
}

Derived.java

package package2;

public class Derived extends Base<Derived.Inner>{
    static class Inner extends Base.Inner{}
}

基础 class 编译没有问题。派生class的编译失败,第一个错误是

Derived.java:6: error: Inner has protected access in Base
   public static class Inner extends Base.Inner{}
                                         ^

我没有看到代码中的错误。请解释一下。 JDK 1.8.0_40

能够使用 protected Derived Derived Derived class 中 Base 的内容(属性、内部 classes、方法) ] 应该与 Base 在同一个包中或者应该扩展 Base

这是 a javac bug 在版本 9 中修复的。