1. class test1 {
    2. private var p: Int = 10
    3. var name = "chris"
    4. fun pri(valu: Int) {
    5. println(valu)
    6. }
    7. fun getName() {
    8. println("name is $name")
    9. }
    10. }

    反射上面的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)
            }
        }