如何通过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 的支持,因此将来可能会起作用。
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 的支持,因此将来可能会起作用。