如何获取方法参数的名称和值?

方法代码中有没有可能获取方法参数的名字? 任何人都可以显示它的例子吗?

我目前只找到这个解决方案,但不喜欢它..:

class Greeter() { fun greet(name: String) { val c = Greeter::class; for (m in c.memberFunctions) { if (m.name == "greet") { val p = m.parameters println(p.toString()) } } println("Hello, ${name}"); } } fun main(args: Array<String>) { Greeter().greet("UserName") } 

更新:我发现了另一个解决方案,但现在我有一个更多的问题:如何获得paramName,ParamValue函数的问候?

 class Greeter() { fun greet(name: String) { val p = Greeter::greet.parameters println(p.toString()) println("Hello, ${name}"); } } fun main(args: Array<String>) { Greeter().greet("UserName") } 

参数名称通过KParameter.name属性可用:

 class Greeter() { fun greet(name: String) { val p = Greeter::greet.parameters println("Hello, ${p[0].name}"); } } 

另一方面,参数无法在JVM上轻松获得。