使用 zipWith 组合两个 Flux 时出错
Error when combining two Flux using zipWith
我正在学习反应流并尝试按如下方式组合两个 Flux;
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);
调用订阅时,出现以下错误:
Multiple markers at this line
- The method subscribe(Consumer<? super String>) in the type Flux<String> is not applicable for the arguments
(elems::add)
- The type List<Integer> does not define add(String) that is applicable here
我得到了以下解决问题的建议:
但是 none 这些替代方案有效。
有什么建议,如何解决这个问题?
有时方法引用会让您忽略显而易见的事情。我已经重写了你的函数,但是使用了匿名 class.
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) 中的代码完成来创建这个匿名 class。如您所见,此消费者的输入是 String
,它来自
String.format("First : %d, Second : %d \n", one, two)
所以它抱怨说你不能将 String
添加到 List<Integer>
,而这正是你试图使用 elems:add
所做的
我正在学习反应流并尝试按如下方式组合两个 Flux;
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);
调用订阅时,出现以下错误:
Multiple markers at this line
- The method subscribe(Consumer<? super String>) in the type Flux<String> is not applicable for the arguments
(elems::add)
- The type List<Integer> does not define add(String) that is applicable here
我得到了以下解决问题的建议:
但是 none 这些替代方案有效。 有什么建议,如何解决这个问题?
有时方法引用会让您忽略显而易见的事情。我已经重写了你的函数,但是使用了匿名 class.
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) 中的代码完成来创建这个匿名 class。如您所见,此消费者的输入是 String
,它来自
String.format("First : %d, Second : %d \n", one, two)
所以它抱怨说你不能将 String
添加到 List<Integer>
,而这正是你试图使用 elems:add