+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

Kotlin中反射_51CTO博客_kotlin 反射

枚举类成员 import kotlin.reflect.full.memberFunctions import kotlin.reflect.full.memberProperties fun main(arg: Array<String>) { val p = Person::class //类引用 println("成员列表(属性和函数)" + p.members.size) for (member in p.members) { println(member.name + " " + member.returnType) } println("属性个数" + p.memberProperties.size) for (member in p.memberProperties) { println(member.name + " " + member.returnType) } println("函数个数" + p.memberFunctions.size) for (member in p.memberFunctions) { println(member.name + " " + member.returnType) } } class Person(val value: String, val num: Int) { fun process() { } } 动态调用成员函数 fun main(arg: Array<String>) { val p = Person::process //类引用 //调用invoke函数执行process函数 p.invoke(Person("abc",20)) //利用java的反射机制指定process方法的名字 val method = Person::class.java.getMethod("process") //动态调用process函数 method.invoke(Person("tom",25)) } class Person(val value: String, val num: Int) { fun process() { println("value $value num $num") } } 动态调用成员属性 fun main(arg: Array<String>) { val person = Person() //获取属性对象 val name = Person::name //读取属性值 println(name.get(person)) //设置属性值 name.set(person, "new") println(name.get(person)) } class Person() { var name: String = "tom" get() = field set(value) { field = value } }