扩展方法
Kotlin 能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。 这通过叫做 扩展 的特殊声明完成。 例如,你可以为一个你不能修改的、来自第三方库中的类编写一个新的函数。 这个新增的函数就像那个原始类本来就有的函数一样,可以用普通的方法调用。 这种机制称为扩展函数 。
扩展方法是指不改变类的源码的情况下为类增加自定义的方法
语法结构:
fun ClassName.methodName(param1: Int, param2: Int): Int {
//相关逻辑
return 0
}
例如我们给String
定义个扩展方法
/**
* 对字符串本身进行指定次数的拼接.
* @param times 次数
* @return 最终拼接后的字符串.
*/
fun String.times(times: Int): String {
val builder = StringBuilder()
for (i in 0 until times) {
builder.append(this)
}
return builder.toString()
}
调用
fun main() {
println("test".times(2))
}
打印结果
testtest
注意:
- 扩展函数在不修改某个类源码的情况下,动态地添加新的函数.className.
- 扩展函数不能访问原有类的私有属性
- 底层实际上是用写了个静态函数来实现的,将类的实例传入这个静态函数,然后搞一些操作
扩展属性
扩展属性可以给类提供一种方法,用来扩展类的 API。但是尽管它被成为属性,它也没有给现有的对象添加额外的字段。
TextView扩展leftMargin属性.
//扩展属性
var TextView.leftMargin: Int
get():Int {
return (layoutParams as ViewGroup.MarginLayoutParams).leftMargin
}
set(value) {
(layoutParams as ViewGroup.MarginLayoutParams).leftMargin = value
}
网友评论