我想创建一个扩展方法,帮助我验证lateinit
一个类的所有属性是否已在给定时间点初始化。到目前为止,我提出了以下几点:
fun Any.assertLateInitPropertiesAreInitialized() {
for (member in this::class.memberProperties) {
if (member.isLateinit) {
try {
member.call(this)
}
catch (e: Throwable) {
if (e.cause is UninitializedPropertyAccessException) {
throw e
}
}
}
}
}
但它相当难看,因为我必须明确调用该属性,这可能非常昂贵。
有没有办法isInitialized
代替使用?我不知道如何绑定myKProperty1
以this
获得 aKProperty0
所以我访问它(如果可能的话)。