Kotlin学习路(五):变量延迟初始化

本文探讨了Kotlin中如何使用`lateinit`关键字进行全局变量的延迟初始化,以简化代码中的判空保护。介绍了如果不初始化就访问会抛出`UninitializedPropertyAccessExcepetion`异常,并提供了初始化判断的实现方式。
摘要由CSDN通过智能技术生成

<本文学习郭神《第三行代码》总结>

在项目开发过程中一般会写很多全局变量,这些全局变量在代码中会做很多判空保护,这样就会是代码编写很繁琐。比如

var s : Second ?= null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_login)
    s = Second()
    s ?. doHomework()
    s ?. doHome()
    s ?. doWork()
}

当有多个全局变量时,就会写很多的判空保护。所以这里就需要对全局变量进行延迟初始化操作,使用关键字lateinit,它会告诉编译器,晚些时候对该变量进行初始化,在代码中就不用进行判空保护。

所以上述代码就可修改为:

lateinit var s : Second
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_login)
    s = Second()
    s . doHomework()
    s . doHome()
    s . doWork()
}

可以看出,当加入lateinit关键字之后,就不用了做判空保护。

需要注意的是,如果在使用了lateinit关键字之后,调用全局变量时还未对该变量进行初始化,则会报错,抛出异常UninitializedPropertyAccessExcepetion,所以当使用la

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值