作者:小果康康维五_469 | 来源:互联网 | 2024-09-29 13:44
我有以下代码。为什么在Flux从Publisher扩展的同时,我不能在发布者的订阅方法上使用lambda,而在Flux上却可以使用lambda吗?
Publisher publisher = new Publisher() {
@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 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
作为参数,而不是功能接口。
Flux
有一个重载的subscribe
方法,该方法以Consumer
作为参数,是一个功能接口。实际上,您在最后一行中使用的是后一版本。
请参见Javadoc