在 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)
}
我正在尝试创建一个 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)
}