我正试图创建一个 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)
}
声明类型参数的 Mono
与 out
扩展函数中的修饰符可以解决这个问题。
fun <T> Mono<out DTO<T>>.toModel(): Mono<T> {
return this.map(DTO<T>::toModel)
}