Tag: observable

制作JFrame和Observable对象

我有一个类让我们说MyJFrame代表我的应用程序的GUI。 它实现了Observer接口并覆盖了方法update 。 public class MyJFrame extends JFrame implements Observer{ … public void update(Observable arg0, Object arg1){ … } } 现在我想让我的JFram成为一个Observable对象,但我不能,因为它已经扩展了类JFrame 。 我尝试在我的类中创建一个Observable类型的变量。 public class MyJFrame extends JFrame implements Observer{ Observable observable = new Observable(); 这里的问题是我可以将Observer添加到这个可观察字段,我也可以通知观察者,但我不能调用方法setChanghed() (因为它被声明为protected),必须在通知之前调用它。 你对我能实现它有什么想法吗? 谢谢!!

如何使用RXJava Observables处理用于填充模型的多个请求?

我们在网络堆栈中使用ReactiveX和Retrofit以异步方式处理所有API请求。 我们的目标是创建一个返回完全填充的User模型集合的方法。 每个User模型都有一个Pet对象列表。 我们可以通过一个请求获取所有User模型。 但是,每个User需要请求Pet模型。 获得用户很简单: // Service.java @GET(“users/?locationId={id}”) Observable<List> getUsersForLocation(@Path(“id”) int locationId); @GET(“pets/?userId={id}”) Observable<List> getPetsForUser(@Path(“id”) int userId); // DataManager.java public Observable<List> getUsersForLocation(int locationId) { return api.getUsersForLocation(locationId); } public Observable<List> getPetsForUser(int userId) { return api.getPetsForUser(userId); } 我们希望找到一些方便的(RX风格)循环User列表的方法,为每个用户获取Pet ,将它们分配给User并最终返回Observable<List> 。 我对RX很新。 我查看了文档,并尝试使用各种方法,如flatMap()和zip ,但是,我还没有找到变换或组合的确切组合来实现它。

RxJava2 observable抛出UndeliverableException

据我所知,RxJava2 values.take(1)创建了另一个Observable,它只包含原始Observable中的一个元素。 哪个不能抛出exception,因为它被take(1)的效果过滤掉,因为它发生在第二个。 如下面的代码片段所示 Observable values = Observable.create(o -> { o.onNext(1); o.onError(new Exception(“Oops”)); }); values.take(1) .subscribe( System.out::println, e -> System.out.println(“Error: ” + e.getMessage()), () -> System.out.println(“Completed”) ); 产量 1 Completed io.reactivex.exceptions.UndeliverableException: java.lang.Exception: Oops at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:366) at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onError(ObservableCreate.java:83) at ch02.lambda$main$0(ch02.java:28) at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:40) at io.reactivex.Observable.subscribe(Observable.java:10841) at io.reactivex.internal.operators.observable.ObservableTake.subscribeActual(ObservableTake.java:30) at io.reactivex.Observable.subscribe(Observable.java:10841) at io.reactivex.Observable.subscribe(Observable.java:10827) at io.reactivex.Observable.subscribe(Observable.java:10787) at ch02.main(ch02.java:32) Caused by: […]

Java的Observable类的替代品?

我从C#世界来到Java,其中Observer模式被实现为带有event关键字的一流语言结构。 我看到Java从早期开始就有Observable类,但它显然存在实现问题,似乎并没有被广泛使用。 到目前为止,我刚刚在我的Java代码中滚动了我自己的Observer模式实现,但我总是忍不住认为必须有一个更好的替代方案来总是输出这个样板代码。 Swing中有Listener类,但它们似乎不适合非Swing代码。 针对这个常见问题的推荐解决方案是什么? 第三方库对我来说没问题。

如何在RxJava中执行递归可观察调用?

我对RxJava (以及一般的反应范式) 都很陌生 ,所以请耐心等待。 假设我有这个News和这个嵌套的Comment数据结构: public class News { public int id; public int[] commentIds; //only top level comments public News(int id, int[] commentIds) { this.id = id; this.commentIds = commentIds; } } public class Comment { public int id; public int parentId; //ID of parent News or parent comment public int[] childIds; public Comment(int […]

Java 8:Observable List – 在属性更改时调用Invalidation Listener或Change Listener

我构建一个自定义属性并将其添加到可观察列表中。 但是如果属性内容发生更改,则不会调用侦听器。 以下代码段显示了“构建”: public static final class TestObject { private final ReadOnlyStringWrapper title = new ReadOnlyStringWrapper(); private final BooleanProperty selected = new SimpleBooleanProperty(false); public TestObject(String title) { this.title.set(title); } public String getTitle() { return title.get(); } public ReadOnlyStringProperty titleProperty() { return title.getReadOnlyProperty(); } public boolean getSelected() { return selected.get(); } public BooleanProperty selectedProperty() { return […]

Paginate Observable结果没有递归 – RxJava

我有一个非常标准的API分页问题,​​您可以使用一些简单的递归来处理。 这是一个捏造的例子: public Observable<List> scan() { return scanPage(Optional.empty(), ImmutableList.of()); } private Observable scanPage(Optional startKey, List results) { return this.scanner.scan(startKey, LIMIT) .flatMap(page -> { if (!page.getLastKey().isPresent()) { return Observable.just(results); } return scanPage(page.getLastKey(), ImmutableList.builder() .addAll(results) .addAll(page.getResults()) .build() ); }); } 但这显然可以创建一个巨大的callstack。 如何强制执行此操作但保持Observable流? 这是一个命令式阻塞示例: public List scan() { Optional startKey = Optional.empty(); final ImmutableList.Builder results = ImmutableList.builder(); do […]