我希望以后初始化私有变量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
}
}
答案 0 :(得分:2)
通常,声明为非null类型的属性必须是 在构造函数中初始化。然而,通常情况并非如此 方便。例如,可以通过初始化属性 依赖注入,或单元测试的设置方法。在这 case,您不能在构造函数中提供非null初始值设定项,但是 您仍然希望在引用属性时避免空检查 在一个班级的体内。
使用primite类型,您只需删除lateinit
修饰符并初始化为零(或布尔值为假)