将Observable添加到Observable <collection <class>&gt; </collection <class>中

时间:2014-05-02 16:24:20

标签: java collections observable

我试图创建一个可观察的集合,然后在该集合中添加一个observable。

现在在这段代码中,它说= new Observable<ArrayList<DMRegistration>>();在rx.Observable中保护了访问权限,并且不会实例化。

还有dmRegistrations.add(dmRegistration);抱怨add说它无法解决方法&#39;添加(rx.Observable)&#39;

我是一个非常新的可观察者并且用谷歌搜索过,但没有发现任何提供信息导致可能的解决方案。我是以错误的方式接近这个吗?

@Override
public Observable<Collection<DMRegistration>>getAllRegistrations() throws DMException{
    try{
        Observable<Collection<DMRegistration>> dmRegistrations = new Observable<ArrayList<DMRegistration>>();
        Observable<DMRegistration> dmRegistration = execute(get(baseUrl + "registrations"), DMRegistration.class);
        dmRegistrations.add(dmRegistration);
        return dmRegistrations;

    }catch(RestException e){
        throw new DMException(e);
    }
}

1 个答案:

答案 0 :(得分:2)

好吧,如果Observable构造函数具有受保护的访问权限,那么除非您在Observable类或Observable的子类中工作,否则不能使用它。因此,如果您希望使用最少的更改来完成此工作,则必须使此类成为Observable的子类或将构造函数设为公共,但是根据您的情况可能会或可能不会。

编译器抱怨无法解决add(rx.Observable)的原因是因为它意味着它所说的内容。它找不到与Observable类中的名称/参数组合匹配的方法。可能是因为Observable参数化的方式,因为看起来add()正在寻找与您想要输入的类型不同的类型。

我在这里对Observable的结构做了一些猜测,但是你想要添加的元素类型似乎与{{1}的元素类型不匹配拿走。您声明dmRegistrationsdmRegistrations,(我假设)表示您正在观察Observable<Collection<DMRegistration>>。您尝试添加Collection<DMRegistration>类型的对象,这不是Observable<DMRegistration>正在寻找的对象,除非add()实现Observable