【发布时间】:2021-04-11 21:38:44
【问题描述】:
我正在尝试在 register 方法中使用 filtering 创建一个热可观察对象,作为实现基本接口的事件列表,如下所示:
public void register(Observer<AppEvent> observer, List<AppEvent> filter) {
Log.d(TAG, "Registering observer");
subject.subscribeOn(Schedulers.io())
.filter(o -> {
return filter.stream().anyMatch(it -> (o instanceof it));
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
public interface AppEvent extends Serializable {
}
public static class ItemDetails implements AppEvent {
public String info;
public ItemDetails(String malwareInfo) {
info = malwareInfo;
}
}
public static class InitApi implements AppEvent {
public Boolean isSuccess;
public InitApi(boolean isSuccess) {
this.isSuccess = isSuccess;
}
}
我要做的是根据事件类的类型(在我们的例子中是 ItemDetails 或 InitApi)有一个 过滤器。 逻辑上代码是正确的:
.filter(o -> {
return filter.stream().anyMatch(it -> (o instanceof it));
})
但是编译器说unknown class it。
如何过滤 AppEvent 列表?
【问题讨论】:
-
instanceof的参数必须是类型的名称,即类或接口。it不是类或接口的名称。因此编译器错误itis not a class
标签: java android filter rx-java