classPerson val kClass: KClass<Person> = Person::class// 使用类名引用 val p = Person() // p可能是Person的子类,使用协变类型接收 val objClass: KClass<out Person> = p::class// 对象引用,获取到的是实际类型
函数引用
函数使用 :: 引用,引用的类型为 KFunction
1 2 3 4 5 6 7 8 9
funsay(a: String): Int { return0 } val f0: KFunction<Int> = ::say // 成员函数引用 classPerson { funsay(): Int = 0 } val pf1: KFunction<Int> = Person::say
属性引用
属性使用 :: 引用,引用类型为 KProperty
1 2 3 4 5 6 7 8 9 10 11 12
val x = 20 val x0: KProperty<Int> = ::x // 可变属性引用 var y = 20 val y0: KMutableProperty<Int> = ::y // 成员属性引用 classPerson { val x = 20 var y = 20 } val px1: KProperty<Int> = Person::x val py1: KMutableProperty<Int> = Person::y