springReact堆堆芯编译问题

nmpmafwu  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(373)

我对React堆核心相当陌生,我正在努力理解它的工作方式。我发现一个示例程序,我试图运行,但它给我的错误如下。
详细信息->订阅方法(consumer<?类型flux中的超整数>)不适用于参数(new flow.subscriber(){})
据我所知,它需要订户实现来创建订阅,以便从flux获取数据。
请帮忙。
我在jdk8和jdk11中执行了它,但在两个jdk上都出现了相同的错误。

public static void callCustomSubscribe() {
        List<Integer> elements = new ArrayList<Integer>();

//      Subscriber<Integer> subs = new SubscribeImpl();

        Flux.just(1, 2, 3, 4)
          .log()
          .subscribe(new Subscriber<Integer>() { // Error comes here
            @Override
            public void onNext(Integer integer) {
              elements.add(integer);
            }

            @Override
            public void onError(Throwable t) {}

            @Override
            public void onComplete() {}

            @Override
            public void onSubscribe(Subscription subscription) {
                // TODO Auto-generated method stub
                subscription.request(Long.MAX_VALUE);
            }
        });
    }
dly7yett

dly7yett1#

不,不需要定制 Subscriber 要运行的实现。已经有几个在中实现了 Reactor .
我真的不明白你想用你的代码做什么。但你通常不会对外声明 ArrayList 把它用在兰姆达斯。它更像是java流,您可以在lambdas中进行转换。
例子:

Flux.just(1, 2, 3, 4)
    .map(value -> {
        return value += 1;
    })
    .subscribe(n -> {
        System.out.println(n);
    });

我开始了解React堆的好方法是通过React堆的开始文档。创建通量或单声道并订阅它的简单方法。
你的错误是因为你正在使用 Flow.Subscriber 当它真正想要的是 Consumer 这是一个完全不同的接口。如果你真的想实现一个完整的订户,一个好的开始就是使用 BaseSubscriber 作为一个抽象基,然后重写其中的一些功能,但这更多的是中间练习。

相关问题