gpt4 book ai didi

kotlin - 为什么lateinit对Object类型有效,但对原始类型无效?

转载 作者:行者123 更新时间:2023-12-02 03:01:31 27 4
gpt4 key购买 nike

This answer says that Object types use the null value on lateinits of Object type 。有人可以详细说明一下吗? “使用空值”是什么意思?

此外,它还说“对于原始类型,没有这样的值” - 为什么没有

最佳答案

在 JVM 上(历史上是 Kotlin 的第一个目标平台),primitive types 之间存在区别。和类,或对象类型。

它们具有不同的运行时表示:原始值直接存储在字段中,该字段只能保存相应的原始类型值之一(例如只有 truefalse对于 bool 值),并且没有针对缺失值的特殊表示。相比之下,类类型字段存储对分配在堆中某处的实例的间接引用,并且类类型字段可以保存特殊的null引用,不指向任何实例。

Kotlin lateinit 属性被编译为单个字段,并且它们在内部使用 null 值来指示该属性尚未初始化。由于原始类型的 JVM 字段不能有 null 值,Kotlin 不允许使用通常为 mapped to Java primitives 的类型的 lateinit 属性。 ,因为这需要不同的表示,并且不存在可接受的解决方案,正如另一个答案所说。

相反,您可以使用 by Delegates.notNull()使用映射类型实现类似的行为。

关于kotlin - 为什么lateinit对Object类型有效,但对原始类型无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55769198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com