【发布时间】:2019-10-11 06:11:18
【问题描述】:
我有一个 lateinit var
lateinit var someVariable: SomeVariable
我像someVariable = SomeVariable() 一样初始化这个值,并在需要时使用它。
在某个时刻,我想将所有内容设置为默认值并想“取消初始化”someVariable。我怎样才能做到这一点?
我不希望将其类型更改为 nullable 对象并设置为 null。我需要将其保留为 Non-Null 类型。
【问题讨论】:
-
我只是想了解您的用例。为什么要再次取消初始化该属性?
-
您可以使用解决方法并为该字段使用委托重置,如下所示:stackoverflow.com/questions/35752575/…
-
@AshrafPatel 用例是前向应变:我不想处理空值检查。我多次使用此变量,我只是不想检查可空性或将其设置为
someVariable!!,即使我知道它不为空。我需要的是非空变量。 -
lateinit var仅用于首次初始化,适用于您知道变量不可为空但无法在构造函数中初始化它的情况(例如在 android 框架中)。如果您在之后“取消初始化”它,那么拥有lateinit var是没有意义的。 Kotlin 不允许这种操作。 -
@musooff,所以你想回滚到java处理空值的方式?