1

有什么简单的方法可以列出类中的所有属性,不包括具有自定义 getter 的属性?

例如在这种情况下:

class Person(val name: String, val age: Int) {

    val signature: String get() = "$name - $age"
    
    val uuid = UUID.randomUUID()
}

我想找到:[ Person::name, Person::age, Person::uuid ]

4

1 回答 1

0

只有 getter 的属性没有 JVM 支持字段。因此,您可以获取所有属性并排除那些没有字段的属性。

// All properties
Person::class.declaredMemberProperties.forEach {
    println(it.name)
}
println()

// All fields
Person::class.java.declaredFields.forEach {
    println(it.name)
}
println()

您会注意到signature第二组中缺少该内容。

于 2021-08-26T21:35:41.497 回答