kotlin: 用 is 运算符进行类型检测
一,功能
1,在 Kotlin 中 , 如果不确定一个 实例对象的类型 , 可以 使用 is 运算符进行判定
实例对象 is 判定类型
判定 实例对象 是否是 判定类型 , 如果是 返回 true , 反之 返回 false
2,智能转换(Smart Cast):
当通过 is 检查类型后,Kotlin 编译器会自动将对象转换为目标类型(在作用域内)。
适用场景:if、when 表达式或局部变量等不可变场景。
二,例子
代码:
//处理按钮点击事件
binding.button1.setOnClickListener {
open class Person(val name: String, val age: Int) {
fun info() {
println("name : $name, age : $age")
}
open fun sayHello(){
println("Hello World")
}
}
class Student : Person("Tom", 18){
override fun sayHello(){
println("Hello World Tom")
}
}
var student = Student()
var person = Person("Jerry", 12)
//子类对象属于父类
println("student is Person : ${student is Person}")
println("student is Student : ${student is Student}")
println("person is Person : ${person is Person}")
//父类对象不属于子类
println("person is Student : ${person is Student}")
}
运行结果:

三,例子
代码:
//处理按钮点击事件
binding.button2.setOnClickListener {
fun getStringLength(obj: Any): Int? {
// 在&&右边的`obj`自动转换为String
if (obj is String && obj.length > 0) {
return obj.length
}
return null
}
println(getStringLength("王富贵是总统秘书"))
println(getStringLength(false))
println(getStringLength(100))
fun describe(obj: Any) = when (obj) {
is Int -> "Int: $obj"
is String -> "String: ${obj.length} chars"
is Boolean -> "Boolean: $obj"
else -> "Unknown type"
}
println(describe("王富贵是总统秘书"))
println(describe(false))
println(describe(100))
}
运行结果:

浙公网安备 33010602011771号