假设我在Spring中使用Kotlin控制器方法,我想返回ResponseEntity<Test>
或ResponseEntity<Error>
。
如何在Kotlin中完成这项工作?我试图放ResponseEntitiy<Any>
或ResponseEntity<*>
,但Kotlin总是抱怨。
那么如何使返回类型真正通用?
@GetMapping
fun test(): Mono<ResponseEntity<?????>>
{
return Mono.just(1)
.map { ResponseEntity.ok(Test("OK") }
.switchIfEmpty(Mono.just(ResponseEntity.badRequest().body(Error("Error"))))
}
答案 0 :(得分:1)
您还需要更改正文以为每次调用提供正确的类型:
fun test(): Mono<ResponseEntity<*>> {
return Mono.just(1)
.map { ResponseEntity.ok(Test("OK")) as ResponseEntity<*> }
.switchIfEmpty(Mono.just(ResponseEntity.badRequest().body(Error("Error")) as ResponseEntity<*>))
}
可替换地,
fun test(): Mono<ResponseEntity<Any>> {
return Mono.just(1)
.map { ResponseEntity.ok<Any>(Test("OK")) }
.switchIfEmpty(Mono.just(ResponseEntity.badRequest().body<Any>(Error("Error"))))
}
如果在Kotlin中写了ResponseEntity
,它可能是协变的并简化Any
案例,但它不是。
(注意:我目前无法测试,因此可能需要一些修复)