类型检测


就是对对象的类型进行,判断,是这个类还是不是这个类

关键字

  • 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("什么情况 你还来这招")
    }
}

/**
什么情况 你还来这招
*/

results matching ""

    No results matching ""