MST
星途 面试题库

面试题:Kotlin反射机制中获取类属性的方法

在Kotlin反射机制里,如何获取一个类的所有属性?请给出示例代码,并说明获取到的属性对象都包含哪些信息。
47.9万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

在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声明)。