Back to questions
Junior — Middle
75
Чем отличаются типы Maybe и Single в RxJava и в каких сценариях их используют?
Companies where asked
GrowFood
Answer from AI
sobes.tech AI
В RxJava типы Maybe и Single используются для работы с потоками, которые могут выдавать ограниченное количество элементов, но они отличаются по поведению:
-
Single<T>— поток, который гарантированно эмиттит ровно один элемент или ошибку. Он не может завершиться без значения. -
Maybe<T>— поток, который может эмиттить один элемент, либо не эмиттить ничего (просто завершиться), либо выдать ошибку.
Когда использовать:
Singleподходит, когда вы точно ожидаете один результат, например, загрузка данных из сети или базы.Maybeудобен, когда результат может быть либо один, либо отсутствовать, например, поиск объекта по ID, который может не найтись.
Пример:
Single<String> single = Single.just("Hello");
Maybe<String> maybeWithValue = Maybe.just("Hello");
Maybe<String> maybeEmpty = Maybe.empty();
single.subscribe(
value -> System.out.println("Single: " + value),
error -> System.err.println(error)
);
maybeWithValue.subscribe(
value -> System.out.println("Maybe with value: " + value),
error -> System.err.println(error),
() -> System.out.println("Maybe completed without value")
);
maybeEmpty.subscribe(
value -> System.out.println("Maybe with value: " + value),
error -> System.err.println(error),
() -> System.out.println("Maybe completed without value")
);