Observable.asObservable() фактически не передает тип Observable; он фактически обертывает текущий Observable. Это означает, что никто не имеет доступа к Observable вверх.
Тот же код, использующий asObservable() сбой ClassCastException:
Это очень похоже на final модификатор. Иногда вы не хотите, чтобы код имел 100% контроль над всем.
Ответ 2
Мне нужно было "запомнить" испущенную стоимость для последующих подписчиков, поэтому я использовал BehaviourSubject. Я решил вернуть Observable, чтобы подписчики не пытались отправить данные на него.