美文网首页Kotlin开发宝典
【Kotlin】与一个可以为空的对象交互式很简单

【Kotlin】与一个可以为空的对象交互式很简单

作者: FynnJason | 来源:发表于2017-05-22 17:04 被阅读212次

一、如何调用?

在对象后面使用"?"符号。

当一个对象添加了"?"符号,只会在这个对象存在的时候被调用,否则将会忽略它,安全运行程序。

举例:

val context : Context? = null
val res = context?.getResources() // 不会崩溃,但是 res 将为空.

二、调戏

我们知道上面的代码不会使程序崩溃,那么我们可以这样调戏Kotlin,我们继续使用可以为空的对象,代码最终会是这样:

val context : Context? = null
val res = context?.getResources() // 不会崩,但为空
val appName = res?.getString(R.string.app_name) // 不会崩,但为空
val shortName = appName?.substring(0, 2) // 不会崩,但为空

我们发现,这样下去是很可怕的,因为我们在实际项目中,是不会让对象为空的。那么我们如何判断非空的呢?如果只是检测context 不为空,可以省略掉"?"符号:

//第一种 java方式
val context : Context? = null
if (context != null) {
    val res = context.getResources()    // 不需要 '?'
    val appName = res.getString(R.string.app_name)
    val shortName = appName.substring(0, 2)
}
//第二种 kotlin方式
val context : Context? = null
context?.let {
    val res = context.getResources()    // 不需要'?'
    val appName = res.getString(R.string.app_name)
    val shortName = appName.substring(0, 2)
}

三、总结

使用kotlin的非空判断方式可以灵活的替换掉Java的非空判断,省略掉"?"符号。

相关文章

网友评论

    本文标题:【Kotlin】与一个可以为空的对象交互式很简单

    本文链接:https://www.haomeiwen.com/subject/nzcixxtx.html