使用zipWith组合两个Flux时出错

时间:2017-12-28 07:12:24

标签: publish-subscribe spring-webflux reactive-streams

我正在学习反应流并试图将两个Flux结合起来如下;

3. is it possible to have XPC client which runs objective-c 
code while the XPC listener will run on swift code ? 

当调用subscribe时,我收到以下错误:

        List<Integer> elems = new ArrayList<>();
        Flux.just(10,20,30,40)
            .log()
            .map(x -> x * 2)
            .zipWith(Flux.range(0, Integer.MAX_VALUE), 
                    (two, one) -> String.format("First  : %d, Second : %d \n", one, two))
            .subscribe(elems::add);

我得到了以下建议来解决问题:

enter image description here

但这些替代方案都没有奏效。 有什么建议,如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

有时,方法引用会让您忽略显而易见的事实。我已经重写了你的函数,但是使用了匿名类。

  List<Integer> elems = new ArrayList<>();
    Flux.just(10,20,30,40)
        .log()
        .map(x -> x * 2)
        .zipWith(Flux.range(0, Integer.MAX_VALUE),
            (two, one) -> String.format("First  : %d, Second : %d \n", one, two))
        .subscribe(new Consumer<String>() {
          @Override
          public void accept(String s) {

          }
        });

我已经使用IDE(intellij)中的代码完成来创建这个匿名类。正如您所看到的,此消费者的输入是String,来自

String.format("First  : %d, Second : %d \n", one, two)

因此,我们抱怨您无法将String添加到List<Integer>这是您尝试使用elems:add

进行的操作