Котлин: Итерация над компонентами объекта

Каждый объект класса данных имеет компонент для каждого свойства, такого как component1, component2 и т.д. Мне было интересно, есть ли какой-либо способ в Kotlin перебирать каждый компонент класса. Скажем, у меня есть класс:

class User(age:Int, name:String)

Могу ли я сделать что-то вроде:

for(component in aUserObject){
    //do some stuff with age or name
}

?

Ответ 1

Прежде всего, свойства componentN доступны только для классов данных, а не для каждого объекта.

Нет API, специально для итерации по компонентам, но вы можете использовать отражение Kotlin для перебора свойств любого класса:

class User(val age: Int, val name: String)

fun main(args: Array<String>) {
    val user = User(25, "Bob")
    for (prop in User::class.memberProperties) {
        println("${prop.name} = ${prop.get(user)}")
    }  
}