【问题标题】:Why can't I set lateinit for a int var in Kotlin? [duplicate]为什么我不能在 Kotlin 中为 int var 设置 lateinit? [复制]
【发布时间】:2018-04-01 10:17:46
【问题描述】:

我希望稍后初始化私有的a var id,所以我使用代码private lateinit var id:Int

但我得到错误'lateinit' modifier is not allowed on properties of primitive type,为什么?我该如何解决?谢谢!

代码 A

class UIAddEditBackup: AppCompatActivity() {
    private lateinit var mContext: Context //OK
    private var isAdd: Boolean=false //OK
    private lateinit var id:Int   // I get the error

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.layout_add_edit_backup)
        id=5
    }
}

【问题讨论】:

标签: android kotlin


【解决方案1】:

通常,声明为非空类型的属性必须是 在构造函数中初始化。然而,这通常不是 方便的。例如,可以通过以下方式初始化属性 依赖注入,或者在单元测试的设置方法中。在这个 在这种情况下,您不能在构造函数中提供非空初始值设定项,但是 在引用该属性时,您仍然希望避免空检查 在类的主体内。

对于基本类型,您只需删除 lateinit 修饰符并使用零(或布尔值为 false)进行初始化

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-16
    • 2011-02-15
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2016-07-19
    相关资源
    最近更新 更多