gpt4 book ai didi

reflection - 如何在Kotlin中声明一组可反射的函数?

转载 作者:行者123 更新时间:2023-12-02 13:09:23 27 4
gpt4 key购买 nike

我想声明一组不是类成员函数的Kotlin函数(即“静态”函数,无需引用类实例)。必须以某种方式声明它们,以便我可以在运行时使用反射对它们进行迭代。

我的第一个尝试是编写一个像这样的文件Commands.kt:

fun a(): Int = 42
fun b(): Int = 23

但是,我没有找到一种方法来遍历此文件中的功能。我知道,为了实现Java兼容性,将生成一个 CommandsKt类,其中包含那些作为静态方法的功能。但是,我似乎无法在Kotlin中引用该类,也没有找到通过反射遍历Kotlin文件的所有实体的方法。

我的第二次尝试是使用一个对象:
object Commands {
fun a(): Int = 42
fun b(): Int = 23
}

我现在可以通过 Commands::class.declaredMemberFunctions遍历成员函数。但是,这些函数仍将是成员函数,而不是“静态”(用Java来说)函数(对吗?)。

那么我将如何声明这些函数,使其既是静态的又可以通过反射进行迭代?

最佳答案

如果用object注释@JvmStatic中声明的函数,则它们将被编译为静态Java方法。

关于reflection - 如何在Kotlin中声明一组可反射的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49515167/

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