java - 订阅者不是一个函数式接口(interface)

标签 java reactor

我有以下代码。为什么虽然 Flux 从 Publisher 扩展而来,但我不能在发布者的 subscribe 方法上使用 lambda,而可以在 Flux 上使用?

        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.subscribe 采用 Subscriber 作为参数,这不是一个函数式接口(interface)。

Flux 有一个重载的 subscribe 方法,该方法采用 Consumer 作为参数,这是一个函数式接口(interface)。事实上,您在最后一行中使用的是后一个版本。

参见Javadoc

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

相关文章:

java - Jboss 7 上的 Jersey 2

python - 扭曲的 Python 暂停/推迟 react 器

spring - 如何使用响应式(Reactive)单声道环绕一系列非阻塞操作?

java - @Async API 端点 Spring Webflux

sockets - 如何使用Golang实现与Java NIO/AIO相同的 react 器机制

mono - 合并两个 Mono 并得到一个 Flux。然后从该 Flux 中提取 Mono

java - 程序接受单词作为 i/p,检查单词辅音/元音中的每个单个字符字母。条件 如果输入不是字母则打印错误消息

java - 使用 ZipInputStream 解压缩永远不会完成

java - JPA ManyToMany -关系 - joinTable 未填充

java - SOLR sqlserver无法执行查询