Kotlin中Reactor Mono扩展函数的通用性问题

问题描述 投票:0回答:1

我正试图创建一个 DTO 接口,其中有一个方法可以将dto转换回原始模型。现在,我想创建一个扩展函数到 Mono 类,以使其具有更好的可读性。但我不能让它工作,谁能帮帮我。

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)
}
generics kotlin project-reactor
1个回答
1
投票

声明类型参数的 Monoout 扩展函数中的修饰符可以解决这个问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.