默认情况下,使用Kotlin语言,我们必须在引入每个变量时对其进行初始化。为了避免这种情况,可以使用lateinit
关键字。在初始化之前引用lateinit
变量会导致运行时异常。
但是,lateinit
不能与原始类型一起使用。为什么会这样呢?
最佳答案
对于(非空)对象类型,Kotlin使用null
值来标记lateinit
属性尚未初始化,并在访问该属性时引发适当的异常。
对于原始类型,没有这样的值,因此无法将属性标记为未初始化,也无法提供lateinit
需要提供的诊断信息。 (我们可以尝试使用某种单独的标记,但是当通过反射初始化字段时,该标记不会被更新,这是lateinit
的主要用例)。
因此,lateinit
仅支持对象类型的属性。
关于initialization - 为什么Kotlin不允许对原始类型使用lateinit?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38761294/