Не удается получить доступ к защищенному внутреннему классу во время наследования

Просто установите это в файл v21 / styles.xml

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
 <item name="android:statusBarColor">@color/colorPrimaryDark</item>

и убедитесь, что

 <item name="android:windowTranslucentStatus">false</item>
13
задан ebsbk 29 September 2009 в 02:34
поделиться

3 ответа

Сообщение об ошибке жалуется на защищаемый конструктор, а не на класс. Но вы явно не определили конструктор в опубликованном вами коде. В этом случае в соответствии с JLS конструктор по умолчанию будет защищен (так же, как и класс).

23
ответ дан 1 December 2019 в 20:00
поделиться

Вам необходимо определить общедоступный конструктор для Внутреннего класса :

public class COne {

    protected class Inner implements IOne{

        public Inner() { }

        public void f(){System.out.println("Inner class of COne");}
    }
}
9
ответ дан 1 December 2019 в 20:00
поделиться

Это ясно. Но вот что действительно странно.

Согласно JLS , если CTwo расширяет COne.Inner, ожидается доступ к защищенному конструктору Inner, но на практике это не так ... См. Ниже.

package p1;
public class COne {
    public static class Inner {
        protected Inner() {}
    }
}

package p2;
public class CTwo extends COne.Inner {
    public void getIface() {
        new COne.Inner();
        // Compile time error anyway with the same complains:
        // "Inner() has protected access in p1.COne.Inner"
        // ...unlike my expectations...
    }
}  
0
ответ дан 1 December 2019 в 20:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: