class test1 {private var p: Int = 10var name = "chris"fun pri(valu: Int) {println(valu)}fun getName() {println("name is $name")}}
反射上面的class
//反射test1类
val java = test1::class
//方法
java.memberFunctions.forEach { function ->
println(function.name)
if (function.name == "pri") {
println(function.parameters)
//暴力private
function.isAccessible = true
//call调用
function.call(java.primaryConstructor?.call(), 2000)
}
}
//反射构造函数或得对对象 ,0为第一个无惨构造函数
val call = java.constructors.elementAt(0).call()
//反射 成员
java.memberProperties.forEach { proper ->
proper.isAccessible = true
println(
"${proper.name}=${
proper.get(java.constructors.elementAt(0).call())
}"
)
if (proper.name == "name") {
//修改成员变量
(proper as KMutableProperty1<test1, Any>).let { mutable ->
println("------${mutable.name}")
mutable.set(call, "lisan")
}
}
}
java.memberFunctions.forEach { methed ->
methed.isAccessible = true
if (methed.name == "getName") {
methed.call(call)
}
}
