我有以下代码。为什么当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);

最佳答案

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

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

Javadoc

关于java - 订户不是功能接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59013907/

10-10 10:00