Почему некоторые из классов, включенных в Библиотеки Android, не являются общедоступными? Для меня это не имеет никакого смысла и в основном просто создает барьер для разработки временных исправлений для некоторых из недавно выпущенных виджетах с ошибками.Почему некоторые классы не являются общедоступными в Библиотеке поддержки Android?
В частности, я говорю о TextInputLayout
в Android Design Support Library. Например, если я хочу создать собственный виджет, который переопределяет некоторый код в конструкторе, я не могу этого сделать, потому что CollapsingTextHelper
не является общедоступным. Мне нужно будет загрузить исходный код и скопировать соответствующие классы в мой проект, но на самом деле нет ничего, что мешало бы мне делать это в любом случае. Итак, в чем смысл не публиковать его в первую очередь?
Как я понимаю, поскольку библиотека обновляется и улучшается с течением времени, вы можете просто добавить аннотацию @Deprecated
, чтобы указать, что определенный класс устарел или устарел и все еще существует, чтобы предотвратить нарушение устаревшего кода.
Я знаю, что для библиотеки нет смысла просто публиковать все классы, но я не понимаю, почему классы, необходимые для реализации виджета, не должны быть общедоступными. Почему они не могут просто добавить аннотацию @Deprecated
, когда один из классов заменяется лучшей версией или когда виджеты реализованы совсем другим способом?
Можете ли вы уточнить? Это можно трактовать как широко, так как спрашивать, каковы преимущества инкапсуляции OO. –
Вы пытаетесь создать собственный виджет, но не хотите расширять его из класса виджетов Android. (вы случайно написали суперкласс, он должен быть подклассом). Почему вы не хотите распространяться из класса виджетов? Любая причина? – luckylukein
Я отредактировал свой вопрос, чтобы надеяться, выяснить, что я действительно спрашивал. Если он все еще запутан или неясен, тогда, может быть, мой вопрос просто глупо. Но по крайней мере я буду знать, почему вы знаете – charliebeckwith