Ошибка «Несовместимый тип» при отправке массива String в Observable в RxJava 2 - PullRequest
0 голосов
/ 05 мая 2018

Здесь задают очень простой вопрос по RxJava, потому что я не могу его найти нигде.

У меня есть это наблюдаемое в RxJava 2 -

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

Работает нормально. Нет проблем.

Но когда я пытаюсь передать такой массив, как это -

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

Выдает ошибку для несовместимых типов .

  1. Разве второе объявление не совпадает с первым объявлением? Если нет, то почему?

  2. Мне нужен способ для создания предопределенного массива, а в onNext of the Observer я должен получать отдельные элементы массива. Как этого добиться?

1 Ответ

0 голосов
/ 05 мая 2018

Разве второе объявление не совпадает с первым объявлением? Если нет, то почему?

Нет. Система типов Java делает различие между простыми типами и массивом этих типов:

String s = new String("whatever")

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

A String[] не является единственным String типом.

Метод just определяется следующим образом:

Observable<T> just(T item);

Если мы заменим T = String, вы получите подпись Observable<String> just(String item).

Если мы заменим T = String[], что мы получим? Observable<String[]> just(String[] item).

Мне нужен способ создания предопределенного массива, и в onNext of the Observer я должен получать отдельные элементы массива. Как этого добиться?

Используйте fromArray, как это определено как Observable<T> fromArray(T[] array):

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