Обработка нуля в RxJava2

С предстоящимRxJava2 релиз Одним из важных изменений является то, чтоnull больше не принимается в качестве элемента потока, то есть следующий код вызовет исключение:Observable.just(null)

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

Например, в моем приложении у меня есть кэш в памяти:

@Nullable CacheItem findCacheItem(long id);

CacheItem может отсутствовать в кэше, поэтому метод может возвращать нулевое значение.

То, как это используется с Rx * - следующим образом:

Observable<CacheItem> getStream(final long id) {
    return Observable.fromCallable(new Callable<CacheItem>() {
        @Override public CacheItem call() throws Exception {
            return findCacheItem(id);
        }
    });
}

Таким образом, при таком подходе я мог бы получить значение null в своем потоке, что является полностью допустимой ситуацией, поэтому он обрабатывается должным образом на принимающей стороне - скажем, пользовательский интерфейс меняет свое состояние, если элемент отсутствует в кэше:

Observable.just(user)
          .map(user -> user.getName())
          .map(name -> convertNameToId(name))
          .flatMap(id -> getStream(id))
          .map(cacheItem -> getUserInfoFromCacheItem(cacheItem))
          .subscribe(
              userInfo -> {
                  if(userInfo != null) showUserInfo();
                  else showPrompt();
              }
          );

С RxJava2 мне больше не разрешено писатьnull вниз по течению, поэтому мне нужно либо обернуть мой CacheItem в какой-то другой класс и заставить мой поток создать вместо этого обертку, либо внести довольно большие архитектурные изменения.

Свертывать каждый элемент потока в обнуляемый аналог не выглядит правильным для меня.

Я что-то упустил здесь?

Кажется, что ситуация, подобная моей, довольно популярна, поэтому мне интересно, какова рекомендуемая стратегия для решения этой проблемы, учитывая новую политику "не ноль" в RxJava2?

РЕДАКТИРОВАТЬ Пожалуйста, смотрите последующий разговор вRxJava GitHub репо

Ответы на вопрос(4)

Ваш ответ на вопрос