面试题答案
一键面试在Kotlin反射机制中,可以通过以下方式获取一个类的所有属性:
import kotlin.reflect.full.declaredMemberProperties
class Example {
var property1: String = "value1"
val property2: Int = 2
}
fun main() {
val exampleClass = Example::class
val properties = exampleClass.declaredMemberProperties
properties.forEach { property ->
println("Property name: ${property.name}")
println("Property type: ${property.returnType}")
println("Is final: ${property.isFinal}")
println("Is var: ${property.isVar}")
println()
}
}
获取到的属性对象KProperty1
包含以下信息:
- 名称:通过
name
属性获取,如上述代码中的property.name
,可以获取属性的名称。 - 返回类型:通过
returnType
属性获取,如property.returnType
,可得到属性的类型。 - 是否为final:通过
isFinal
属性获取,判断该属性是否为final。 - 是否为var:通过
isVar
属性获取,判断该属性是否为可变(var
声明)。