Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get names and values of method's parameters?

Tags:

kotlin

Is there possibility to get names of method's parameters inside method code? Can anyone show example of it?

I found only this solution at this time, but dislike it..:

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")
}

update: i found another solution, but now i have one more question: How to get pairs of ParamName, ParamValue at function greet?

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")
}
like image 377
Andrey Durow Avatar asked Dec 17 '25 20:12

Andrey Durow


1 Answers

Parameter names are available through the KParameter.name property:

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

Parameter values, on the other hand, cannot be obtained reflectively easily on JVM.

like image 81
Alexander Udalov Avatar answered Dec 20 '25 16:12

Alexander Udalov