kotlin基础五之Smart casts特性
kotlin基础五之Smart casts
在大多数情况下,kotlin不需要使用显式转换符,编译器会自动跟踪is
检查并在需要时自动插入安全的转换:
fun isString(s: Any) =
when (s) {
is String -> println("$s is a String, length is : ${s.length}")
else -> println("$s no a String.")
}
fun main(vararg args: String) {
isString("Hello")
isString(123)
}
//result:
> Hello is a String, length is : 5
> 123 no a String.
在kotlin中,使用is
关键字来检查对象的类型,如果你学过C#语言,你会发现这很像C#。is
关键字和Java中的instanceof
也很像,只不过kotlin还会进行智能转换,无需你强制进行转换。
当然,在某种需要进行强制转换的场所,我们也有办法,那就是as
操作符。这是一种不安全的转换:
fun isString(s: Any) =
when (s) {
is String -> {
val hello = s as String
println("$s is a String, length is : ${s.length}")
println("hello as String: $hello")
}
else -> println("$s no a String.")
}
fun main(vararg args: String) {
isString("Hello")
isString(123)
}
//result:
> Hello is a String, length is : 5
> hello as String: Hello
> 123 no a String.