我有以下代码。为什么Flux从Publisher扩展时,我不能在publisher的subscribe方法上使用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);发布于 2019-11-24 16:39:46
Publisher.subscribe接受Subscriber作为参数,该参数不是函数接口。
Flux有一个重载的subscribe方法,它接受一个Consumer作为参数,这是一个函数接口。实际上,您在最后一行中使用的是后一个版本。
请参阅Javadoc
https://stackoverflow.com/questions/59013907
复制相似问题