如何通过kotlin中的反射获取参数名称?

How to get parameter names via reflection in kotlin?

java8 有“-parameters”参数,传递给编译器,那么 kotlin 呢? 如我所见,kotlin 编译器将带有参数名称的 @JetValueParameter 注释添加到参数中,但其中一个被删除了..

更新: Reflection API 现在支持获取参数名称: KCallable.parameters 会给你一个参数列表, KParameter.name会给你名字。

当前的解决方案是使用 JetValueParameter 注释,尽管它已被弃用。

我们正在努力支持 Kotlin 反射中的参数名称,这将很快可用。届时 JetValueParameter 将被新的 API.

取代

需要说明的是,Kotlin编译器目前只生成兼容Java1.6的JVM字节码,而javac的-parameters对应的MethodParameters属性只出现在字节码中Java 1.8。因此,您仍然无法通过 Java 反射 获取 Kotlin 方法的参数名称。不过,我们正在考虑对字节码目标 1.8 的支持,因此将来可能会起作用。