在 Kotlin 中扩展函数到 Reactor Mono 的泛型问题

Issue with generics for extension function to Reactor Mono in Kotlin

我正在尝试创建一个 DTO 接口,该接口具有将 dto 转换回其原始模型的方法。现在我想为 Mono class 创建一个扩展函数以提高可读性。但是我无法让它工作,有没有好心人帮帮我。

class StringDTO(private val s: String) : DTO<String> {
    override fun fromModel(model: String): DTO<String> {
        TODO("Not yet implemented")
    }

    override fun toModel(): String {
        return s
    }
}

val s = Mono.just("asd")
    .map { StringDTO(it) }
    .toModel<String>()
    .block()

println("s = ${s}")

fun <T> Mono<DTO<T>>.toModel(): Mono<T> {
    return this.map(DTO<T>::toModel)
}

在扩展函数中用 out 修饰符声明 Mono 的类型参数解决了问题:

fun <T> Mono<out DTO<T>>.toModel(): Mono<T> {
    return this.map(DTO<T>::toModel)
}