Kotlin 扩展

本文探讨了Kotlin的扩展特性,包括扩展函数和扩展属性的定义和使用。通过示例,展示了如何为类添加新功能,而无需继承或使用装饰者模式。扩展函数和属性在编译时静态解析,并且在同名时,成员函数优先级高于扩展函数。扩展作用域允许在不同包中使用,提供了一种高效、简洁地增强已有类功能的方式。
摘要由CSDN通过智能技术生成

开启一系列新文章记录Kotlin有关内容,基础语法部分就不过多赘述了,大家可以参见Kotlin官方白皮书,主要是记录一些个人对于该语音部分特性的理解。


定义

首先,看一下官方对于扩展的定义:
能够扩展一个类的新功能而无需继承该类或使用像装饰者这样的任何类型的设计模式。 这通过叫做 扩展 的特殊声明完成。Kotlin 支持 扩展函数 和 扩展属性。
其实也不难理解,我们对比Java的特性分析一下:
Java语言中,类与类之间的功能是独立的,一个类能够获得其他类的属性或者功能时,需要通过继承来实现;或者持有其他类的实例对象从而获取它的功能(装饰者模式)等方式或手段来扩展一个有限功能的类。
而在Kotlin中,操作与实现将会变得更加简单方便,轻松的便可以对现有类进行拓展。

拓展函数

声明一个扩展函数,我们需要用一个 接收者类型 也就是被扩展的类型来作为他的前缀。
举个例子:

fun Context.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(this,message,duration).show()
}

这样一来,Context和任意它的子类都可以使用toast函数来完成弹窗。
这个 this 关键字在扩展函数内部对应到接收者对象(传过来的在点符号前的对象)。
同样的也能对泛型进行拓展:

fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] // “this”对应该列表
    this[index1] = this[index2]
    this[index2] = tmp
}

val l = mutableListOf(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值