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

如何在使用Flux.handle()时指定泛型类型?

如何在Flux.handle()中指定泛型类型

你不需要额外使用map()转换类型,有两种直接指定泛型的方式:

方式一:显式声明lambda参数的类型

在handle的lambda中明确指定输入参数和sink的泛型类型,编译器就能正确推断返回的Flux类型:

Flux.range(0, 10)
        .handle((Integer x, SynchronousSink<Integer> sink) -> {
            if (x % 2 == 0)
                sink.next(x);
        })
        .subscribe(System.out::println);

方式二:显式指定handle方法的泛型参数

直接为handle方法指定输出泛型,强制编译器使用该类型:

Flux.range(0, 10)
        .<Integer>handle((x, sink) -> {
            if (x % 2 == 0)
                sink.next(x);
        })
        .subscribe(System.out::println);

原理说明

原代码中,lambda里的SynchronousSink未指定泛型,编译器默认推断为Object,导致handle返回Flux<Object>。通过上述两种方式明确泛型类型后,编译器会直接生成对应类型的Flux,无需后续map转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:36:58