Kotlin

您所在的位置:网站首页 list强制转换 Kotlin

Kotlin

2023-08-29 01:25| 来源: 网络整理| 查看: 265

准备工作

准备两个类Person与Child Person类如下:

open class Person(name: String, age: Int) { var mName = name var mAge = age open fun printInfo(): Int = Log.e("TAG", "$mName.....$mAge") }

Child类如下:

class Child(name: String, age: Int, canWalk: Boolean) : Person(name, age) { var mCanWalk = canWalk override fun printInfo(): Int = Log.e("Child", "Child...$mName...$mAge...$mCanWalk") fun printCanWalk() = Log.e("TAG", "Child Can Walk....$mCanWalk") } 类型判断

在java中使用instanceof来判断类型。而在Kotlin中,则是使用is来判断:

var person = Person("Bob", 30) if (person is Child) { person.printCanWalk() } else { person.printInfo() }

可以看到在判断完类型后,可以直接调用该类型的函数。这部分是编译器替我们完成的,并且在条件表达式中同样可以使用

if (person is Child && person.mCanWalk) { person.printCanWalk() } 类型强转

当有确定类型当时候,就可以使用as进行强制转换了:

var person = Person("Bob", 30) var child = person as Child

但是如果在强转当时候,发现类型不匹配,则会报Exception。而如果是null类型的对象强转时,可以通过?来允许可空数据进行判断

var person : Any = Person("Bob", 30) var child: Child? = person as? Child child?.printCanWalk()

这样的话,当类型判断为空时,则会返回null,而在执行child?.printCanWalk()语句时,会判断child是否为空,如果为空的话,则不会执行,如果不为空的话,就会执行。

而将person标为Any,可以相当于Java中的Object,为了去除编译器的警告。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3