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表达式*/
相关推荐
IT猿手几秒前
2025最新群智能优化算法:海市蜃楼搜索优化(Mirage Search Optimization, MSO)算法求解23个经典函数测试集,MATLAB
开发语言·人工智能·算法·机器学习·matlab·机器人
夏天的味道٥3 小时前
使用 Java 执行 SQL 语句和存储过程
java·开发语言·sql
IT、木易4 小时前
大白话JavaScript实现一个函数,将字符串中的每个单词首字母大写。
开发语言·前端·javascript·ecmascript
Mr.NickJJ5 小时前
JavaScript系列06-深入理解 JavaScript 事件系统:从原生事件到 React 合成事件
开发语言·javascript·react.js
Archer1946 小时前
C语言——链表
c语言·开发语言·链表
My Li.6 小时前
c++的介绍
开发语言·c++
功德+n6 小时前
Maven 使用指南:基础 + 进阶 + 高级用法
java·开发语言·maven
达斯维达的大眼睛6 小时前
qt小项目,简单的音乐播放器
开发语言·qt
面会菜.7 小时前
C语言(队列)
c语言·开发语言
香精煎鱼香翅捞饭7 小时前
java通用自研接口限流组件
java·开发语言