首页 > 解决方案 > 如何实现原始类型的lateinit效果?

问题描述

我读过为什么 Kotlin 不允许将 lateinit 与原始类型一起使用?.

但是,使用 有一个好处lateinit,即如果错误是由于没有初始化引起的,可以从错误信息中立即知道。但是对于不能使用的原始类型lateinit,比如Int,用户必须赋值0。但是如果合适的值应该是一个远大于0的值,必须稍后确定,然后,用户忘记了init 值,后来程序产生了错误,有什么办法可以让看到错误信息的用户立即意识到错误不是其他原因造成的呢?

多谢。

并且lateinit var v:Int? = null非常糟糕,这使得操作v--变得非常复杂。

标签: kotlin

解决方案


您链接的答案解释了为什么在技术上不可能支持原始类型的 lateinit 。因此,即使拥有它们有好处,那么……好吧,见上文,这在技术上是不可能的。

您可以使用属性委托来获得非常相似的效果:

var v by Delegates.notNull<Int>()

推荐阅读