我想检查是否在扩展方法中初始化了 lateinit 属性。我想在扩展方法中安全地执行对 lateinit 属性的简单函数调用。
我可以使用this::property.isInitialized
.
想写一些扩展,如:
fun <T> T?.executeSafety(func: T.() -> (Unit)) { this?.func() }
然后我们可以轻松地在 lateinit 属性上执行简单的方法。请帮忙
我想检查是否在扩展方法中初始化了 lateinit 属性。我想在扩展方法中安全地执行对 lateinit 属性的简单函数调用。
我可以使用this::property.isInitialized
.
想写一些扩展,如:
fun <T> T?.executeSafety(func: T.() -> (Unit)) { this?.func() }
然后我们可以轻松地在 lateinit 属性上执行简单的方法。请帮忙
在 Kotlin 1.2 及更高版本上,我们可以使用基于反射的 API 快速检查 lateinit 属性是否已初始化。
以下是它的工作原理:
lateinit var fullName: String
if (::fullName.isInitialized) {
print("Hi, $fullName")
}
由于此反射 API 仅适用于已定义的属性:
我们可以通过在目标类上添加一个新方法来检查其他类的 lateinit 属性:
class LateComer {
lateinit var student: Student
fun isStudentInitialised() = ::student.isInitialized
}