使用类型检查和自动类型转换
is操作符用来检查一个表达式是否是特定类型的实例。如果一个不可变的局部变量被检测出是某种数据类型,那么不需要显示的进行转换。
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// `obj`会被自动的转换为`String`
return obj.length
}
// `obj`的类型不是String,而是Any
return null
}
或者是
fun getStringLength(obj: Any): Int? {
if (obj !is String) return null
// `obj`自动的转换为`String`
return obj.length
}
更甚
fun getStringLength(obj: Any): Int? {
// 在`&&`的右边,`obj`会被自动转换为`String`
if (obj is String && obj.length > 0) {
return obj.length
}
return null
}