渐进式编程课
Kotlin 目录
第 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+,未见废弃标记)。

官方参考