类型检测
就是对对象的类型进行,判断,是这个类还是不是这个类
关键字
- is & !is
var str = "Hello world."
if (str is String) {
println(" What are fuck String!")
} else {
println("你 不是真正的String")
}
/**
What are fuck String!
*/
- as
不安全使用,下面代码会报错
var num = 1
var str: String = num as String
println("The str is $str")《
安全使用
这就不会报错,但是返回为null
fun BaseMain() {
var num = 1
var str: String? = num as? String
println("The str is $str")
}
/**
The str is null
*/
类型擦除&泛型检测
在程序运行时,编译器是不知道如List<String>中的String类型的,擦除得像这样List<*>
所以当我们做Lis的泛型检测时,就和平常的有所区别了
fun BaseMain() {
var l = listOf<String>("Hello", "world", "!")
if (l is List<*>) {
println("什么情况 你还来这招")
}
}
/**
什么情况 你还来这招
*/