通过Kotlin中的反射获取成员变量

时间:2018-10-22 11:48:43

标签: reflection kotlin

如果我在Kotlin上课:

class Foo{

var x= null
var y=null

}

我想检查通过反射在运行时设置了哪些成员。我可以遍历它们,并在Java中检查是否为空。

Foo foo= new Foo();

//this gives me the value of foo.x
Foo.class.getDeclaredField("x").get(foo);

在Kotlin / Native中我该怎么做?我知道我可以通过

在Android中实现此目标
Foo::class.java.getDeclaredField("x").get(foo)

但这在本机环境中不起作用。

1 个答案:

答案 0 :(得分:1)

我只是在阅读文档,因此以下内容可能有误,但是您可以尝试以下方法:

val prop : KCallable = Foo::class.members.firstOrNull { it.name == "x" }
if (prop != null) {
   val xValue : Int? = prop.call(object)
    //you have to declare the type of the xValue
}