在Android中,lateinit
用于声明一个非空的延迟初始化的属性。为了确保属性被初始化,你需要遵循以下步骤:
lateinit
声明之前,确保你已经初始化了该属性。你可以在构造函数、onCreate()
方法或其他适当的地方进行初始化。class MyActivity : AppCompatActivity() {
lateinit var myProperty: MyType
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 初始化属性
myProperty = MyType()
}
}
@Volatile
关键字修饰lateinit
属性,以确保在多线程环境下的可见性。class MyActivity : AppCompatActivity() {
@Volatile
lateinit var myProperty: MyType
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 初始化属性
myProperty = MyType()
}
}
lateinit
属性之前,使用ensureInitialized()
方法检查属性是否已经被初始化。如果尚未初始化,该方法将抛出一个UninitializedPropertyAccessException
异常。class MyActivity : AppCompatActivity() {
lateinit var myProperty: MyType
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 确保属性已初始化
myProperty.ensureInitialized()
// 使用属性
myProperty.doSomething()
}
}
遵循这些步骤可以确保lateinit
属性在访问之前被正确初始化。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:android lateinit如何使用