情報系学部生日記

備忘録や勉強したことのまとめ

Kotlinのリフレクションを使ってプロパティ情報を取得する

やってることは簡単な内容なのですが、日本語の情報があまりなかったのでメモ程度に記録しようかと。
あるクラスのKClassを取得しプロパティ名と中身を取り出してみるというものです。

import kotlin.reflect.full.memberProperties

fun main(args: Array<String>) {
    val myBook = Book(
        name = "Hello Kotlin",
        page = 120,
        isbn = "978-4865940398"
    )

    myBook::class.memberProperties.forEach {
        println("${it.name}: ${it.call(myBook)}")
    }
}

class Book(
    val name: String,
    val page: Long,
    val isbn: String
)

実行結果は以下の通り。

isbn: 978-4865940398
name: Hello Kotlin
page: 120