当前位置:嗨网首页>书籍在线阅读

04-函数引用

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

10.1.3 函数引用

反射的另一个重要的应用就是可以动态地调用对象的成员函数和成员属性。在Kotlin中,通过::操作符,可以很容易地获取类的成员对象。

fun main(args: Array<String>) {
    var user = User::special
    //调用invoke函数插入值
    user.invoke(User("jack", 30))
    //利用反射机制获取指定方法的内容
    var method = User::class.java.getMethod("special")
    //动态调用special函数
    method.invoke(User("Tom", 20))
}
class User(val name: String, val age: Int) {
    fun special() {
        println("name:${name}  age:${age} ")
    }
}

运行上面的代码,输出的结果如下。

name:jack  age:30 
name:Tom  age:20

在上面的实例中,User类含有一个special函数,使用User::special可以获取成员函数的对象,然后使用invoke函数调用special函数,以获取该函数的内容。通过Java的反射机制,可以很容易地实现指定函数名来调用该函数的功能。