前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin日常编程(一)——拒绝使用"!!"

Kotlin日常编程(一)——拒绝使用"!!"

作者头像
饮水思源为名
发布2019-11-21 21:15:02
5390
发布2019-11-21 21:15:02
举报
文章被收录于专栏:Android小菜鸡Android小菜鸡

在我们才从Java转Kotlin的时候经常会写类似下面这样的代码

代码语言:javascript
复制
var str:String?=null
fun init(){
    str="wusy"
    var list=ArrayList<String>()
    list.add(str)
}

这个时候,编译会无法通过,系统会给你改成list.add(str!!)以通过编译。会出现这样的原因是Kotlin有着自己的判空机制。"str!!"表示str一定不为空。但是我们的在定义str的时候可以看到var str:String?=null,str是可以为null的,如果我们没有str="wusy"去赋值。那么程序跑起来一定会崩溃NullPointException。

在日常开发中,这样的场景很常见,例如:我们获取服务器的数据,正常情况下,程序一切OK,但是,哪天服务器大姨妈,返回一个其中的某一个数据为null。整个系统就崩溃了,用户体验极差。咱们怎么去解决这个问题了。笔者这里提供一个解决方法。

代码语言:javascript
复制
var str:String?=null
fun init(){
    str="wusy"
    var list=ArrayList<String>()
    list.add(str?:"default")
}

我们一定要拒绝"!!",用xx?.xx?:""代替。这样写代表的是如果引用的xx存在null,则使用默认的值。这样即便服务器大姨妈了,我们也有default去应对,不至于程序奔溃,让用户体验贼差。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档