修改flatmap函数内的列表时出现不支持的异常

时间:2017-01-16 08:37:44

标签: flatmap rx-java2

尝试从RxJava2中的flatmap“apply”方法内部修改列表时,我得到了不支持的操作异常。

compositeDisposable.add(createObservable()
            .flatMap(new Function<List<String>, ObservableSource<List<String>>>() {
                @Override
                public ObservableSource<List<String>> apply(List<String> s) throws Exception {

                    List<String> modiList = new ArrayList<String>();
                    modiList.addAll(s);
                    modiList.add("barber");

                    //s.add("barber") and return Observable.fromArray(s) thows error

                    return Observable.fromArray(modiList);
                }
            })
            .subscribeWith(getObserver()));

但是,如果我创建一个新列表,它可以正常工作,如上所示。 关于它的任何见解?

下面是我的Observable创建逻辑:

String[] arr = {"hi", "hello", "bye"};
Observable<List<String>> observable;
observable = Observable.fromCallable(() -> Arrays.asList(arr));

1 个答案:

答案 0 :(得分:1)

正如akarnokd所指出的那样,在flatMap中改变列表的值通常是个坏主意,但是你的表面问题是List返回的接口Arrays.asList的实现没有实现{ {1}}。