Почему я не могу получить доступ к закрытым полям пакета в пакете android.widget?
Я пытаюсь переопределить класс Android View, чтобы немного изменить функциональность. Но мне нужно изменить поле, в котором нет метода установки. Я поместил подкласс в пакет под названием android.widget
, Почему я не могу получить доступ ни к одному из полей участника пакета? Я заметил, что компилятор говорит, что они "не могут быть разрешены", а не недоступны. Это как-то связано с тем, как построен Android.jar?
2 ответа
Эти методы не являются частью Android SDK и поэтому недоступны для вас непосредственно из приложения SDK. Если вы создаете прошивку, вы можете получить к ней доступ напрямую. Предположительно, ваш подкласс может получить их через рефлексию, хотя имейте в виду, что такие поля (или любые другие вещи, не относящиеся к SDK) могут быть изменены в любом конкретном выпуске Android.
Это также побочный эффект загрузчиков классов. Ваш пакет android.widget отличается от пакета android.widget, используемого системой.