如何获取方法参数的名称和值?
方法代码中有没有可能获取方法参数的名字? 任何人都可以显示它的例子吗?
我目前只找到这个解决方案,但不喜欢它..:
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上轻松获得。