第 19 课2026.09.24
仅对有具体错误消息的失败状态提供重试入口。
第 19 课:智能转换读取错误消息
- 日期:2026-09-24
- 课程序号:第 19 课
- 知识点:
is与&&的智能类型转换
用途或适用场景
仅对有具体错误消息的失败状态提供重试入口。
核心概念
&& 左侧确认 state is State.Error 后,右侧可直接读取 state.message;这里无需强制类型转换。
最小代码或操作示例
kotlin
sealed interface State {
data object Loading : State
data class Ready(val count: Int) : State
data class Error(val message: String) : State
}
fun canRetry(state: State): Boolean =
state is State.Error && state.message.isNotBlank()
fun main() {
println(canRetry(State.Error("网络失败"))) // true
println(canRetry(State.Error(" "))) // false
}3~5 分钟练习
传入 State.Ready(3),判断是否可重试。
参考答案
结果是 false;左侧类型检查失败,右侧不会读取 message。
与上一课的联系
沿用第 18 课的 State 和 canRetry,以及第 17 课的空白消息情形;本课只新增 && 右侧的智能转换与非空白限制;完成后下一课可把 label 和 canRetry 一起用于界面展示。
时效校验
时效校验:2026-09-24(Kotlin 2.4 Type checks and casts、isNotBlank 官方文档;data object 需 Kotlin 1.9+,未见废弃标记)。