Наследование статического защищенного внутреннего класса, неправильная жалоба от javac - PullRequest
0 голосов
/ 03 декабря 2018

Рассмотрим этот код:

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{}
}

Базовый класс компилируется без проблем.Компиляция производного класса не удалась, первая ошибка:

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

Я не вижу ошибки в коде.Объясните это, пожалуйста.JDK 1.8.0_40

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Это была ошибка javac , исправленная в версии 9.

0 голосов
/ 03 декабря 2018

Чтобы иметь возможность использовать protected вещи (свойства, внутренние классы, методы) из Base внутри Derived Derived класс должен быть либо в том же пакете, что и Base, либо должен расширяться Base

...