Kotlin学习笔记(1)Kotlin反射(reflection)代码示例

kotlin反射代码示例,覆盖常用场景,不定期补充完善

data class User(var name: String, var age: Int, var desc: String) {
    fun toCString() : String{
        return "[override toString] ${toString()}"
    }
}
import kotlin.reflect.full.declaredMemberProperties
//reflection sample
fun main(args: Array<String>){
    //1,反射data
    var user = User("小明", 18, "我是一名学生")
    println("//1,反射data")
    println(user)

    //2,反射构造函数
    var mWang = ::User.call("小王", 20, "我是一个演员")
    println("//2,反射构造函数")
    println(mWang)

    //3,反射属性
    user::name.set("王小明")
    println("3,反射属性")
    println(user)
    println("User field desc's name is ${User::desc.name}")

    //4,循环遍历字段
    println("//4,循环遍历字段")
    User::class.declaredMemberProperties.forEach {
        println("field name ${it.name}, type ${it.returnType}, value ${it.get(user)}")
    }

    //5,反射函数
    var func = User::toCString
    println("//5,反射函数")
    println("execute fun ${func.call(user)}")
}

执行结果

//1,反射data
User(name=小明, age=18, desc=我是一名学生)
//2,反射构造函数
User(name=小王, age=20, desc=我是一个演员)
3,反射属性
User(name=王小明, age=18, desc=我是一名学生)
User field desc's name is desc
//4,循环遍历字段
field name age, type kotlin.Int, value 18
field name desc, type kotlin.String, value 我是一名学生
field name name, type kotlin.String, value 王小明
//5,反射函数
execute fun [override toString] User(name=王小明, age=18, desc=我是一名学生)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。