Skip to content

Instantly share code, notes, and snippets.

@0OZ
Last active April 17, 2021 15:02
Show Gist options
  • Save 0OZ/b6fd351f759a9602e5ef54e967deac39 to your computer and use it in GitHub Desktop.
Save 0OZ/b6fd351f759a9602e5ef54e967deac39 to your computer and use it in GitHub Desktop.
Kotlin ClassMember

Runner:

how to iterate over all values in a Kotlin classe

data class Property(
  val id: Int,
  val name: String,
)

fun main() {
    val porperty = Property(1, "lol")
    ClassMembers.getAll<Property> { propertyMember ->
        val value = propertyMember.get(property)
        value?.let { println(value,propertyMember.name) }
        Unit
    }
}

object ClassMembers {
    inline fun <reified T : Any> getAll(callMember: (key: KProperty1<T, *>) -> Any) {
        val reflection: KClass<T> = T::class
        reflection.memberProperties.forEach { propertyMember ->
            callMember(propertyMember)
        }
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment