Я хочу закрыть метод переопределения в адаптере.Это хорошая практика? - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу улучшить свой recyclerview список адаптеров через модель представления привязки с fragment до моего adapter.

Так что мой новый recyclerview обновляет данные через подписку для просмотра модели.

Теперь мне нужно закрыть список отправленных override Прикол.Потому что мне не нужно обновлять adapter через fragment.Для обновления данных я использую модель связанного вида.

Мое решение:

 @Deprecated("use vm instead", ReplaceWith("throw RuntimeException(\"Calling from fragment is deprecated!\")"))
    override fun submitList(data: MutableList<InvitedGuyVo>?) {
        throw RuntimeException("Calling from fragment is deprecated!")
    }

Но я сомневаюсь, что это хорошая практика - бросить исключение, если я хочу превзойти веселье?

1 Ответ

0 голосов
/ 25 февраля 2019

API не запрещает никому вызывать метод.Может оказаться, что используется класс через базовый класс или интерфейс, где они могут не видеть устаревание.Ключевое слово final может помочь запретить повторную реализацию метода в классах-наследниках.

У вас может быть более сильная аннотация @Deprecated в Kotlin с установленным уровнем HIDDEN, например

@Deprecated("message", level = DeprecationLevel.HIDDEN)

В аннотации может использоваться метод, невидимый для IDE, но все еще видимый для двоичного кода.

Лучшим способом решения проблемы, но, вероятно, слишком сложным, может быть созданиевыделенная иерархия классов или интерфейсов, где в принципе нет способа вызвать метод, который вы пытаетесь скрыть.

...