美文网首页
Kotlin学习笔记(1)Kotlin反射(reflection

Kotlin学习笔记(1)Kotlin反射(reflection

作者: zhaolp2005 | 来源:发表于2018-06-26 14:09 被阅读0次

    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=我是一名学生)
    

    相关文章

      网友评论

          本文标题:Kotlin学习笔记(1)Kotlin反射(reflection

          本文链接:https://www.haomeiwen.com/subject/jwzpyftx.html