代码之家  ›  专栏  ›  技术社区  ›  Gissipi_453

在RxJava 2中的可观察对象中发出字符串数组时出现“不兼容类型”错误

  •  1
  • Gissipi_453  · 技术社区  · 6 年前

    在这里问一个非常基本的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. 我需要一种方法来发出一个预定义的数组,在观察者的旁边,我应该得到数组的各个项目。如何做到这一点?

    1 回复  |  直到 6 年前
        1
  •  2
  •   akarnokd    6 年前

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

    否。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)

    我需要一种方法来发出一个预定义的数组,在观察者的旁边,我应该得到数组的各个项目。如何做到这一点?

    使用 fromArray 定义如下: Observable<T> fromArray(T[] array) :

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