You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Reactor编程中Void类无法解析getT1、getT2方法的报错

问题原因

该错误和方法定义为void没有关联,核心是flatMap操作中Mono组合逻辑的用法错误:

  • Reactor 中Mono.and(OtherPublisher)的作用仅为等待两个发布者都触发完成信号,最终只会返回无实际值的Void类型完成信号,不会将两个Mono的返回结果组合为元组对象。
  • 后续map操作中拿到的keyAndCount实际是Void类型,自然不存在getT1、getT2方法,因此抛出对应错误。

修复方案

将Mono.just(group.key()).and(group.count())替换为Mono.zip方法,zip操作会将多个Mono的返回结果组合为Tuple类型,即可正常调用getT1、getT2方法读取值。

修正后完整代码:

public void countLetters() {
    Flux.just("alpha", "bravo", "charlie")
            .map(String::toUpperCase)
            .flatMap(s -> Flux.fromArray(s.split("")))
            .groupBy(String::toString)
            .sort(Comparator.comparing(GroupedFlux::key))
            // 替换原and逻辑为zip组合
            .flatMap(group -> Mono.zip(Mono.just(group.key()), group.count()))
            .map(keyAndCount ->
                    keyAndCount.getT1() + " => " + keyAndCount.getT2())
            .subscribe(System.out::println);
}

内容的提问来源于stack exchange,提问作者runnerpaul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:54:03