gpt4 book ai didi

android-studio - 将函数名称作为字符串给出时如何调用 kotlin 函数?

转载 作者:行者123 更新时间:2023-12-04 13:06:21 24 4
gpt4 key购买 nike

我正在制作一个包含许多函数的项目,每个函数都名为 prx,x 是最大 200 的数字,是否可以从这样的字符串创建调用

var ="pr"+ x

最佳答案

你可以使用反射来做到这一点

class MyTestClass {
fun pr1(): Int = 5
fun pr2(value: Int) = value.toString()
}


class SomeOtherClass{
fun main(){

val myTestClassObj = MyTestClass()
// Find pr1 by name (function without arguments)
val pr1 = myTestClassObj::class.java.getMethod("pr1").kotlinFunction

// call pr1, pass class object as argument, used to call the function
val pr1Result = pr1?.call(myTestClassObj)

// Find function with arguments, pass function name and type of arguments
val pr2 = MyTestClass::class.java.getMethod("pr2", Int::class.java).kotlinFunction

// Call pr2, pass class reference and the function parameter
val pr2Result = pr2?.call(myTestClassObj, 100)

}
}

使用反射时要小心,使用它很容易产生无法追踪的错误,而且通常它只是糟糕设计的一种变通方法。

关于android-studio - 将函数名称作为字符串给出时如何调用 kotlin 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69317202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com