【问题标题】:'Incompatible type' error in emitting a String array in an Observable in RxJava 2在 RxJava 2 中的 Observable 中发出字符串数组时出现“不兼容的类型”错误
【发布时间】:2018-05-05 12:20:08
【问题描述】:

在这里问一个非常基本的 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. 我需要一种方法来发出预定义的数组,并且在观察者的 onNext 上,我应该获取数组的各个项目。如何实现?

【问题讨论】:

    标签: java android observable rx-java2 reactivex


    【解决方案1】:

    第二个声明和第一个声明不一样吗?如果不是,为什么?

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

    String s = new String("whatever")
    
    String z = new String[0]; // <--------- compile error
    

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

    方法just定义如下:

    Observable<T> just(T item);
    

    如果我们替换T = String,您将得到Observable&lt;String&gt; just(String item) 的签名。

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

    我需要一种方法来发出预定义的数组,并且在观察者的 onNext 上,我应该得到数组的各个项目。如何实现?

    使用fromArray,因为它被定义为Observable&lt;T&gt; fromArray(T[] array)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      相关资源
      最近更新 更多