【发布时间】:2019-06-14 16:31:25
【问题描述】:
背景: 我有一个注释处理器,它通过扫描控制器上的弹簧注释来构建改造接口。我将它设置为在基于 kotlin 或 java 的 spring 应用程序中工作,它可以生成 kotlin 或 java 改造客户端接口。
问题: 当针对基于 kotlin 的 spring 应用程序运行它时,有没有办法在控制器函数上获取默认值,无论是反射还是通过其他方式?
例如控制器功能看起来像
@RequestMapping("/foo")
fun getSomething(@RequestParameter foo: String = "bar") {
...
}
我希望能够生成一个类似于
的改造接口方法fun getSomething(@Header foo: String = "bar")
我知道引擎盖下的编译器实际上为 jvm 创建了多个覆盖方法: https://discuss.kotlinlang.org/t/retrieve-default-parameter-value-via-reflection/7314
但我想知道是否有办法在注释处理阶段捕获这些默认值,或者我是否只需要在生成的 kotlin 客户端中没有默认值。
长话短说 - 有没有一种解决方法可以让我捕获这些默认值?
【问题讨论】:
标签: kotlin annotation-processing