扩展函数
1、简介
-
Kotlin
的扩展函数功能使得我们可以为现有的类添加新的函数,实现某一具体功能 。 - 扩展函数是静态解析的,并未对原类添加函数或属性,对类本身没有任何影响。
- 扩展属性允许定义在类或者kotlin文件中,不允许定义在函数中。
2、定义形式
lambda是要作为参数被传入某方法或赋值给某变量的匿名方法的简化表现形式。
fun Activity.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT){
Toast.makeText(this, message, duration)
.show()
}
-
Activity
:表示函数的接收者,也就是函数扩展的对象 -
.
:扩展函数修饰符 -
toast
:扩展函数的名称 -
(...)
:扩展函数的参数,可以为null
在Activity
的类中可以直接使用toast()
方法,eg、toast("this is toast")
。这就是对Activity类的扩展。
3、扩展函数中this
关键字
this指接收者对象(receiver object)
(也就是调用扩展函数时, 在"."
号之前指定的对象实例).
fun Any?.toString():String{
if(this == null)
return "null"
else{
return toString()
}
}
对象有可能为空,为空时,返回"null"
,而不是抛出NullPointException。