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的反射机制,可以很容易地实现指定函数名来调用该函数的功能。