Kotlin 扩展函数和扩展属性的使用方法
Kotlin能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。这通过叫做扩展的特殊声明完成。例如,你可以为一个你不能修改的、来自第三方库中的类编写一个新的函数。这个新增的函数就像那个原始类本来就有的函数一样,可以用普通的方法调用。这种机制称为扩展函数。此外,也有扩展属性,允许你为一个已经存在的类添加新的属性。
前言
作为安卓开发,我们常常碰到这样的场景,需要把以dp为单位的值转化为以px为单位。这时候我们常会写一个Utils类,比如说
publicclassUtils{ publicstaticfloatdp2px(intdpValue){ return(0.5f+dpValue*Resources.getSystem().getDisplayMetrics().density); } }
在代码中直接调用Utils.dp2px(100)来使用,
valdp2px=Utils.dp2px(100)
如果用kotlin扩展函数的方式来实现,会是怎么调用呢?
valdp2px=100.dp2px()
是不是很惊讶,100作为一个Int,竟然直接调用了一个dp2px方法,如果你去源码里找找,其实是没有个方法的。我们没有动源码,而是使用拓展函数的方式为Int增加了一个方法。
funInt.dp2px():Float{ return(0.5f+this*Resources.getSystem().displayMetrics.density) }
扩展函数
我们再来举个