Kotlin 类型检测与类型转换
类型检测
-
is 运算符 is运算符可以检查对象A是否是特定的类型,还可以检查一个对象是否属于某种数据类型(Int、String等)。 is运算符相当于java中的 instanceof Kotlin中我们可以在运行时通过 is 或者 !is 来检查对象是否符合所需的类型
println("abc" is String) println("abc" !is String) println(null is Any) println(null is Any?)
输出结果如下
true false false true
类型自动转换
在java中,当我们用 “string” instanceof String 为true的时候,如果我们想使用string变量,还需要显示的强制类型转换。
Object o = "abc"; if (o instanceof String){ int length = ((String) o).length(); }
Kotlin中大多数情况是不需要显示的强制类型转换,编译器会自动通过is检查,并在需要是自动转换。
val a = "abc" println(a.length)
as运算符
as运算符用于执行引用类型的显示类型转换,如果类型与指定类型相符,就会转换成功,如果类型不兼容,使用as?就会返回null
@JvmStatic fun main(args: Array<String>) { val ani = Ani() val dog = Dog() ani as Dog } open class Ani { } class Dog : Ani() { }
如果是 父类ani 转换成 子类 dog类会报错如下 说明Kotlin中父类是禁止转换成子类的。按照Liskov替换原则,父类转换为子类是对OOP的严重违反。
学习《Kotlin入门到进阶实战》