For 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 is supported for properties of object types only.