'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);
它为 不兼容的类型 抛出错误。
第二个声明和第一个声明不是一回事吗?如果不是,为什么?
我需要一种方法来发出预定义的数组,并且在 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);
在这里问一个非常基本的 RxJava 问题,因为我在其他地方找不到它。
我在 RxJava 2 中有这个 Observable -
Observable<String> database = Observable.just("1", "2", "3");
它工作正常。没问题。
但是当我尝试传递这样的数组时 -
arr = new String[]{"1", "2", "3"};
Observable<String> database = Observable.just(arr);
它为 不兼容的类型 抛出错误。
第二个声明和第一个声明不是一回事吗?如果不是,为什么?
我需要一种方法来发出预定义的数组,并且在 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);