空类型相关
任何类型都有可空和不可空两种
- 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
网友评论