Kotlin判空辅助工具

1)?.操作符

Kotlin 复制代码
//执行逻辑
if (person != null) {
    person.doSomething()
}
//表达式
person?.doSomething()

2)?:操作符

Kotlin 复制代码
//执行逻辑
val c = if (a != null) {
    a
} else {
    b
}
//表达式
val c = a ?: b

3)!!表达式

Kotlin 复制代码
var message: String? = "Hello!"

fun main() {
    if (message != null) {
        printUpperCase()
    }
}

fun printUpperCase() {
     println(message!!.toUpperCase())
}

/*解释:此处message为可空类型,但在主函数中已进行空值判定;
因而在调用printUpperCase方法时,message不可能为空值;
故而在其末尾加上!!操作符,知会编译器此处不再做空值检查*/

4)let函数

let函数搭配是?.操作符,在存在多次调用时,可以显著减少目标对象的调用次数

Kotlin 复制代码
fun study(student: Student) {
    student?.let {
        it.preview()
        it.takeNotes()
        it.review()
    }
}

/*解释:这里在?.操作符判定student不为空值后,
调用let函数并将student作为参数传入Lambda表达式*/
相关推荐
故事不长丨1 小时前
C#正则表达式完全攻略:从基础到实战的全场景应用指南
开发语言·正则表达式·c#·regex
哈库纳玛塔塔2 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
phltxy2 小时前
从零入门JavaScript:基础语法全解析
开发语言·javascript
天“码”行空3 小时前
java面向对象的三大特性之一多态
java·开发语言·jvm
zFox3 小时前
四、ViewModel + StateFlow + 状态持久化
kotlin·stateflow·viewmodel
odoo中国4 小时前
Odoo 19 模块结构概述
开发语言·python·module·odoo·核心组件·py文件按
代码N年归来仍是新手村成员5 小时前
【Java转Go】即时通信系统代码分析(一)基础Server 构建
java·开发语言·golang
Z1Jxxx5 小时前
01序列01序列
开发语言·c++·算法
沐知全栈开发5 小时前
C语言中的强制类型转换
开发语言
关于不上作者榜就原神启动那件事5 小时前
Java中大量数据Excel导入导出的实现方案
java·开发语言·excel