【发布时间】:2026-01-13 13:45:02
【问题描述】:
如何将以下 Swagger 注解从 Java 转换为 Kotlin?
@ApiResponses(value = { @ApiResponse(code = 200, message = "Given admin user found"),
@ApiResponse(code = 404, message = "..."),
@ApiResponse(code = 500, message = "..."),
@ApiResponse(code = 400, message = "..."),
@ApiResponse(code = 412, message = "...") })
这不起作用:
@ApiResponses(value = listOf(
ApiResponse(code = 200, message = "..."),
ApiResponse(code = 404, message = "..."),
ApiResponse(code = 500, message = "..."),
ApiResponse(code = 400, message = "..."),
ApiResponse(code = 412, message = "...") ))
错误是:
类型推断失败。预期类型不匹配:推断类型为 List 但预期 ApiResponse
当我只使用一个@ApiResponse 而不是listOf() 时它可以工作,但我必须定义更多@ApiResponse(s)。
我使用 Swagger 2.5.0
【问题讨论】:
-
注解需要数组,而不是列表,因此请尝试使用
arrayOf-函数而不是listOf() -
现在出现错误:
Type inference failed. Expected type mismatch: inferred type is Array<ApiResponse> but ApiResponse was expected -
是的,这很奇怪。我很想说这可能是 Kotlin 中的一个错误
-
刚刚试过,实际上你需要完全省略
value = listOf部分,只需将各个参数放在顶层即可。当从 Kotlin 调用时,似乎 kotlin 将一个数组value转换为可变参数。 -
查看我对 Kotlin 语言参考中涵盖此内容的部分的回答以及应该为您工作的代码示例
标签: java annotations kotlin swagger