RxJava предоставляет несколько фабричных методов, которые доступны через класс Observable:
Давайте посмотрим на энергичную реализацию: Observable.just ()
Вы также можете использовать: Observable.fromCallable (() -> {return}) или Observable.defer (() -> {return>}, чтобы отложить дорогостоящий расчет (ленивый). Также есть Observable.fromArray / Observable. fromIterable, который будет охотно принимать список объектов и генерировать их при подписке. Также имеется взаимодействие для Java-Futures: Observable.fromFuture. Также существует Observable.create, который можно использовать для генерации специальных событий контракта, таких как onNext / onComplete / onError. Кроме того, вы можете использовать Observable.create для преобразования Api в стиле обратного вызова в RxJava-Observables.
Упомянутый интерфейс Action1 является функциональным интерфейсом, подобным Consumer из Java8. Это не инструмент для создания Observables, вместо этого он используется для внедрения пользовательского кода в Observable.
Давайте посмотрим на этот пример:
Observable<String> obs$ = Observable.fromCallable(() -> "Test");
obs$.subscribe(s -> System.out.println(s));
В этом примере вы «могли» передать Action1 для подписки, чтобы вызываться при выдаче значения. Как и в случае с RxJava2, Action1 больше не существует. Вместо этого можно было бы использовать Потребителя.