订户不是功能接口

时间:2019-11-24 01:33:58

标签: java reactor

我有以下代码。为什么在Flux从Publisher扩展的同时,我不能在发布者的订阅方法上使用lambda,而在Flux上却可以使用lambda吗?

        Publisher<String> publisher = new Publisher<String>() {
            @Override
            public void subscribe(Subscriber<? super String> subscriber) {
                subscriber.onNext("Hello world");
                subscriber.onNext("Hello world");
                subscriber.onNext("Hello world");
                subscriber.onNext("Hello world");
                subscriber.onComplete();
            }
        };
        //this lines gives me an error "Subscriber<String> is not a functional interface" 
        publisher.subscribe(System.out::println);

        //no error on this line 
        Flux.just("a","b","c","d")
                .subscribe(System.out::println);

1 个答案:

答案 0 :(得分:0)

Publisher.subscribeSubscriber作为参数,而不是功能接口。

Flux有一个重载的subscribe方法,该方法以Consumer作为参数,一个功能接口。实际上,您在最后一行中使用的是后一版本。

请参见Javadoc