【发布时间】:2018-03-27 22:42:03
【问题描述】:
我想声明一组不是类成员函数的 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 语言)函数(对吗?)。
那么我该如何声明这些函数,使它们既是静态的又可以通过反射进行迭代呢?
【问题讨论】:
标签: reflection kotlin