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

标签 kotlin

是否可以在方法代码中获取方法参数的名称?谁能举个例子吗?

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

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/

相关文章:

bitwise-operators - Kotlin 等价于按位或赋值 '|=' 是什么?

java - Spring Boot,GraphQL性能泄漏

java - 非空对象类型上的 Retrofit-Kotlin NullPointerException

json - JSON 字段的多个名称

java - Intellij IDEA中的终端没有JAVA_HOME和java命令

generics - 为 kotlin 泛型设置默认值

android - 在 fragment 中隐藏底部导航 View

android - 如何在上下文菜单中创建弹出菜单?

android - 从 Android Studio '3.2 Canary 16' 升级到 '3.2 Beta 1' 后数据绑定(bind)编译错误

kotlin - 协程作用域被取消后,还可以再次使用吗?