今天我们来学学Kotlin中的智能转化。
在开始说概念之前,我们先说说Java中的一个现象,然后再对比Kotlin中的处理。
Java中的instanceof
首先说说instanceof的用法,它是用来判断左边的对象是不是右边类的实例。如果左边的对象为null,则返回false。如果左边的对象是右边类的实例,或者是左边的对象是右边类的子类的实例,则返回true。下面放上一个Java示例代码。
Java代码
上面的代码通过传入的bill对象使用instanceof来判断它属于哪一种类型的账单,然后再调用不同的计算方法。当然上面的代码也可以不使用instanceof来处理,下面是另一种使用多态的写法。
上面的代码是使用了方法重载来避免使用instanceof。
Kotlin中的智能转换
智能转换,用一句话来总结就是它合并了类型检查和转换这两步操作。可能这么说有些空洞,上代码来解释。
上面的Java代码中,我们看到了这样的代码
这里的代码就是先做了类型检查,之后再做了类型的转换。而在Kotlin中这两步操作它帮我们简化了。
Kotlin代码
上面的代码有几点需要注意:
上面有一个Bill接口,然后在具体类中通过表示实现该接口。
使用来做类型检查,等同于Java中的。
不需要强制类型转化,直接可以调用对应的方法。
写在最后
Kotlin中的智能转换特性可以让我们写出更简洁和优雅的代码,后续我们将会了解到更多的这种特性。
领取专属 10元无门槛券
私享最新 技术干货