一,lateinit的作用
1、特性
- 修饰可变变量:仅用于
var 声明。
- 手动初始化:开发者需在适当位置(如生命周期回调)显式初始化。
- 非空类型:只能用于非空类型(如
String、View),不支持基本数据类型(如 Int、Boolean)。
- 异常风险:访问未初始化的变量会抛出
UninitializedPropertyAccessException。
- 无线程安全:需自行处理多线程环境下的初始化。
2、适用场景
- Android 组件初始化:如
Activity/Fragment 中的 View 绑定。
- 依赖注入:框架(如 Dagger)在运行时注入的变量。
- 明确生命周期:确保在使用前完成初始化(如
onCreate() 中初始化)。
二,代码例子:
class MyActivity : AppCompatActivity() {
private lateinit var button: Button // 非空,延迟初始化
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button = findViewById(R.id.btn_submit) // 手动初始化
button.setOnClickListener { /* ... */ }
}
}