'Incompatible type' 在 RxJava 2 的 Observable 中发出字符串数组时出错

'Incompatible type' error in emitting a String array in an Observable in RxJava 2

在这里问一个非常基本的 RxJava 问题,因为我在其他地方找不到它。

我在 RxJava 2 中有这个 Observable -

Observable<String> database = Observable.just("1", "2", "3");

它工作正常。没问题。

但是当我尝试传递这样的数组时 -

arr = new String[]{"1", "2", "3"};
Observable<String> database = Observable.just(arr);

它为 不兼容的类型 抛出错误。

  1. 第二个声明和第一个声明不是一回事吗?如果不是,为什么?

  2. 我需要一种方法来发出预定义的数组,并且在 Observer 的 onNext 上,我应该获取数组的各个项目。如何实现?

Isn't the second declaration same thing as the first declaration? If not, why?

没有。 Java 的类型系统区分普通类型和这些类型的数组:

String s = new String("whatever")

String z = new String[0]; // <--------- compile error

一个String[]不是一个单一的String类型。

方法just定义如下:

Observable<T> just(T item);

如果我们替换 T = String,您将得到 Observable<String> just(String item) 的签名。

如果我们替换 T = String[],我们会得到什么? Observable<String[]> just(String[] item).

I need a way to emit a predefined Array and on onNext of the Observer, I should be getting the individual items of the Array. How to achieve that?

使用 fromArray,因为它定义为 Observable<T> fromArray(T[] array):

Observable<String> database = Observable.fromArray(arr);