我想知道是否有方法检查lateinit变量是否已初始化。例如:
class Foo() {
private lateinit var myFile: File
fun bar(path: String?) {
path?.let { myFile = File(it) }
}
fun bar2() {
myFile.whateverMethod()
// May crash since I don't know whether myFile has been initialized
}
}
Kotlin 1.2中有一个lateinit改进,允许直接检查lateinit变量的初始化状态:
lateinit var file: File
if (this::file.isInitialized) { ... }
请参阅JetBrains博客上的公告或KEEP提案。
更新:Kotlin 1.2已经发布。您可以在这里找到lateinit增强功能:
检查lateinit变量是否已初始化Lateinit顶级财产和局部变量
Kotlin 1.2中有一个lateinit改进,允许直接检查lateinit变量的初始化状态:
lateinit var file: File
if (this::file.isInitialized) { ... }
请参阅JetBrains博客上的公告或KEEP提案。
更新:Kotlin 1.2已经发布。您可以在这里找到lateinit增强功能:
检查lateinit变量是否已初始化Lateinit顶级财产和局部变量