Why doesn't Kotlin allow to use lateinit with primitive types?

前端 未结 3 1209
-上瘾入骨i
-上瘾入骨i 2020-11-29 05:32

In the Kotlin language we, by default, have to initialize each variable when it is introduced. To avoid this, the lateinit keyword can be used. Referring to a <

3条回答
  •  一个人的身影
    2020-11-29 06:29

    For (non-nullable) object types, Kotlin uses the null value to mark that a lateinit property has not been initialized and to throw the appropriate exception when the property is accessed.

    For primitive types, there is no such value, so there is no way to mark a property as non-initialized and to provide the diagnostics that lateinit needs to provide. (We could try to use a separate marker of some kind, but that marker would not be updated when initializing the field through reflection, which is a major use case of lateinit).

    Therefore, lateinit is supported for properties of object types only.

提交回复
热议问题