浅谈kotlin中的扩展方法在安卓中的应用

首先给大家介绍下kotlin扩展函数的定义格式

kotlin的扩展函数定义格式为:定义一个函数,在被定义的函数前面添加“类名.”,该函数即为该类名对应类的扩展函数

如给安卓中TextView定义一个判断TextView中的文本是否不为空的方法:

使用扩展函数如何我要对一个EidtText(PS:TextView是EditText父类所以EditText也会享有它定义的扩展函数)输入文本是否为空

其中etMsg为一个EditText

是不是觉得很简单?是不是觉很简洁?

下面来了解他的原理kotlin的扩展函数的原理,原理其实也很简单就是扩展函数在调用的时候会将调用者实力本身隐式的传过去

如上例中的etMsg.isNoEmpTy()  在调用时会将etMsg实例对象本身传递过去 ,而在扩展函数中this就是表示调用者实例对象

如上例中的在调用etMsg.isNoEmpTy() 时 TextView.isNoEmpty()中的this便是表示etMsg对象。

值得注意的是,因为需要传递实例对象本身过去所以不能给不能实例化对象的类定义扩展函数和扩展属性,扩展的方式为静态方式所以当子类父类都同时扩展了同样的方法时会是运行各自扩展的功能互不干扰(子类调用的是子类的扩展,父类调用父类的扩展)。

   最后.....感谢各位看官,下期我们为大家分享下扩展属性

 

 

你可能感兴趣的:(kotlin,android)