Kotlin 面试题
目录

Kotlin 中 lateinit 关键字的作用是什么?

· 约 3 分钟读完 · 第 67 / 200 章

推荐答案

在 Kotlin 中,lateinit 关键字用于延迟初始化非空类型的属性。它允许你在声明属性时不立即初始化,而是在稍后的某个时刻进行初始化。lateinit 只能用于 var 声明的属性,并且不能用于基本数据类型(如 Int、Boolean 等)。

本题详细解读

1. lateinit 的使用场景

lateinit 通常用于那些在对象创建时无法立即初始化,但在使用前一定会被初始化的属性。例如,在 Android 开发中,lateinit 常用于在 onCreate 方法中初始化的视图属性。

2. lateinit 的限制

  • lateinit 只能用于 var 声明的属性,不能用于 val。
  • lateinit 不能用于基本数据类型(如 Int、Boolean 等),因为这些类型在 Kotlin 中不能为 null。
  • lateinit 属性在使用前必须被初始化,否则会抛出 UninitializedPropertyAccessException 异常。

3. 检查 lateinit 属性是否已初始化

Kotlin 提供了 ::property.isInitialized 方法来检查 lateinit 属性是否已经初始化。

4. lateinit 与可空类型的区别

lateinit 适用于那些在初始化后不会为 null 的属性,而可空类型(如 String?)则适用于那些可能为 null 的属性。使用 lateinit 可以避免在每次访问属性时进行空检查。

5. 总结

lateinit 是 Kotlin 中用于延迟初始化非空类型属性的关键字,适用于那些在对象创建时无法立即初始化但在使用前一定会被初始化的场景。它简化了代码,避免了不必要的空检查,但需要确保在使用前属性已被初始化。