反射 API
- KClass
- KCallable
- KFunction
- KProperty
member references
class references
bound class references
constructor references
bound constructor references
property references
bound property references
function references
bound function references
member references 原理分析
kotlin.Function 类用于描述 functional type 的值, 如 function references、lambda、匿名函数
- functional type
- function references
- lambda
- 匿名函数
fun main() {
val book = Book(1,"Kotin入门到进阶", "AAA")
val kClass = book::class
println("simpleName = ${kClass.simpleName}")
println("打印属性--------")
// 打印成员属性(包括父类中的)
kClass.memberProperties.forEach {
println("memberProperties=${it.name}")
}
// 打印扩展属性(包括父类中的)
kClass.memberExtensionProperties.forEach {
println("memberExtensionProperties=${it.name}")
}
// 打印成员属性(不包括父类中的)
kClass.declaredMemberProperties.forEach {
println("declaredMemberProperties=${it.name}")
}
// 打印扩展属性(不包括父类中的)
kClass.declaredMemberExtensionProperties.forEach {
println("declaredMemberExtensionProperties=${it.name}")
}
println("打印函数--------")
// 打印所有的非扩展函数(包括父类中的)
kClass.memberFunctions.forEach {
println("memberFunctions=${it.name}")
}
// 打印所有的扩展函数(包括父类中的)
kClass.memberExtensionFunctions.forEach {
println("memberExtensionFunctions=${it.name}")
}
// 打印所有的非扩展函数(不包括父类中的)
kClass.declaredMemberFunctions.forEach {
println("declaredMemberFunctions=${it.name}")
}
// 打印所有的扩展函数(不包括父类中的)
kClass.declaredMemberExtensionFunctions.forEach {
println("declaredMemberExtensionFunctions=${it.name}")
}
}