Java8有"-parameters"参数传递给编译器,那么Kotlin呢?从我所看到的,Kotlin编译器会在参数中添加@JetValueParameter注释与参数名称匹配,但其中一个已被弃用。
Java8有"-parameters"参数传递给编译器,那么Kotlin呢?从我所看到的,Kotlin编译器会在参数中添加@JetValueParameter注释与参数名称匹配,但其中一个已被弃用。
更新:现在反射 API 支持获取参数名称:使用 KCallable.parameters
将给出参数列表,KParameter.name
将给出参数名。
目前的解决方案是使用 JetValueParameter
注解,尽管它已经被弃用。
我们正在努力支持 Kotlin 反射中的参数名称,这将很快可用。到那时,JetValueParameter
将被弃用,并改用新的 API。
值得注意的是,Kotlin 编译器当前只生成与 Java 1.6 兼容的 JVM 字节码,而与 javac 的 -parameters
对应的 MethodParameters
属性出现在 Java 1.8 字节码中。因此,您仍然无法通过 Java 反射 获得 Kotlin 方法的参数名称。我们考虑支持字节码目标 1.8,所以未来可能会起作用。