为什么我不能为Kotlin中的int var设置lateinit?

时间:2018-04-01 01:52:23

标签: android kotlin

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

但我得到错误'lateinit'修饰符不允许原始类型的属性,为什么?我该如何解决?谢谢!

代码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
    }
}

1 个答案:

答案 0 :(得分:2)

  

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

使用primite类型,您只需删除lateinit修饰符并初始化为零(或布尔值为假)