是否可以在方法代码中获取方法参数的名称?谁能举个例子吗?
我目前只找到了这个解决方案,但不喜欢它......:
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")
}
更新:我找到了另一种解决方案,但现在我还有一个问题: 如何在函数greet中获取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 上轻松地通过反射方式获取。
关于kotlin - 如何获取方法参数的名称和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604619/