[Kotlin]空类型与智能转换

空类型相关

任何类型都有可空和不可空两种

  • val notNull: String = null // 错误,不可为空
  • val nullable: String= null //正确,可以为空
  • notNull.length // 正确,不可为空的只可以直接调用
  • nullable.length // 错误, 可能为空,不能直接取长度
  • nullable!!.length // 正确,强制认定nullable不可为空
  • nullable?.length // 正确,若nullable为空,返回空,否则返回长度

类型转换

类似Java类型转换
失败则抛异常
val sub: SubClass = parent as SubClass

安全类型转换
转换失败则返回null,不抛异常
val sub: SubClass = parent as? SubClass

智能类型转换
Kotlin编译器尽可能的推导类型,防止不必要的类型判断

if (parent is SubClass) parent.<子类成员>

以下nullable先判断不为空,所以可以直接取length

if (nullable != null) nullable.length

你可能感兴趣的:([Kotlin]空类型与智能转换)