当我使用时KProperty1
,我可以检查该属性是否已初始化吗?现在我只是尝试将其称为属性并检查是否存在异常:
inline fun <reified T : Any> T.stringify() =
T::class
.memberProperties
.filter { it.visibility == KVisibility.PUBLIC }
.filter {
try {
it.get(this)
true
} catch (_: Throwable) {
// lateinit property may be not initialized
// did not find how to check it
false
}
}
.joinToString(", ") { "${it.name} = \"${it.get(this)}\"" }
.let { T::class.simpleName + "($it)" }