如何使用 reactor.core.publisher Mono<T> 或 Flux<T> 继承?

How to use reactor.core.publisher Mono<T> or Flux<T> with inheritance?

我是反应式编程的新手,我使用的是最后一个 Spring 5 Webflux 框架,并在玩 so project reactor。我遇到了一个问题,我想将 Mono 与此继承模式一起使用:

客户端扩展用户

我创建了这个方法:

public Mono<User> saveUser(Mono<User> userToSave)
{
    return userToSave.doOnNext(u -> {
        // Some stuff
    });
}

我现在不能将此方法与 Mono 作为参数一起使用,尽管 Client extends from User。

Mono<Client> client = ...
instance.saveUser(client); <-- Error

我怎样才能做到这一点?我会尝试一些不好的东西吗?

非常感谢

那是 java 继承 "problem":您需要将您的方法声明为:

public Mono<User> saveUser(Mono<? extends User> userToSave)

(这被称为协变泛型类型。指导是 "be more lenient in what you consume",作为经验法则消耗 == extends