您的位置:首页 > 编程语言

Kotlin编程之扩展属性和扩展伴生对象

2017-05-31 22:04 316 查看
Kotlin编程相关知识点介绍

Kotlin编程之使用Intellij IED和了解源文件(.kt)

Kotlin编程之类的介绍和使用

Kotlin编程之类的属性

Kotlin编程之方法

Kotlin编程之父类和继承父类

Kotlin编程之接口和实现接口

Kotlin编程之伴生对象,抽象类,密封类

Kotlin编程之嵌套类,内部类,匿名内部类

Kotlin编程之对象的表达式和声明

Kotlin编程之扩展方法

扩展属性

在Kotlin编程,对类的函数进行扩展外,也支持属性扩展。

package com.xingen.kotlin.day2017527

fun main(args: Array<String>) {
var  list=listOf("1",2,"3")
println(list.lastIndex)
}

/**
* 属性扩展
* 这里,给List类扩展一个lastIndex的属性,但是不会真的作为成员属性。
*/
val  <T> List<T>.lastIndex:Int get(){
//等同于get=size-1,这里返回最后一个元素的角标
return  this.size-1
}


输出结果:

2


可知:

扩展并不会真正给类添加了成员属性,因此也没有办法让扩展属性拥有一个备份字段.这也是为什么初始化函数不允许有扩展属性。

扩展属性只能够通过明确提供 getter 和 setter方法来进行定义.

伴生对象的扩展

在Kotlin编程中,一个类定义了伴生对象,也可以给伴生对象的属性扩展和函数扩展。

package com.xingen.kotlin.day2017527

fun main(args: Array<String>) {

Day2017527.test()
}
/**
* 定义伴生对象
*/
class Day2017527{
companion object{
}
}
/**
* 伴随对象扩展:
* 这里扩展一个方法
*/
fun  Day2017527.Companion.test(){
println("伴随对象的扩展")
}


输出结果:

伴随对象的扩展


可知:

若是给伴生对象定义的属性扩展或者函数扩展,可以直接通过类名来调用。

扩展的作用域

在Test.kt中编写代码如下:

package com.xingen.kotlin.day2017527

/**
*  对函数进扩展:
*   在函数前面指定一个接受者,这里的接受者是MutabList<E>集合。
*   为它扩展一个swap函数
*  扩展函数的this指向接受者对象。
*
*/
fun  <T> MutableList<T>.swap(x:Int,y:Int){
//利用一个中间变量,互换之指定位置的值。
val temp=this[x]
this[x]=this[y]
this[y]=temp
}


在Day2017527.kt中编写代码如下:

package com.xingen.kotlin.day2017527

//导入需要用到扩展函数所在的包
import  com.xingen.kotlin.day2017527.*

/**
* Created by ${新根} on 2017/5/28 0028.
* 博客:http://blog.csdn.net/hexingen
*/

fun main(args: Array<String>) {
/**
* 调用MutablListOf类的扩展方法swap( )
*/
var  mutableList=mutableListOf("1",2,3)
println(mutableList)
//使用自定义的扩展函数
mutableList.swap(0,2)
println(mutableList)

}


输出结果:

[1, 2, 3]
[3, 2, 1]


可知:

在一个源文件中,编写包级别的扩展函数,在另外一个源文件中可以进行使用。

导入方式如下:

导入对应的包,这里是
import  com.xingen.kotlin.day2017527.*


当然也可以导入具体的路径,包.扩展函数名,这里是
import  com.xingen.kotlin.day2017527.swap


扩展的好处

通过函数扩展,属性扩展,伴生对象扩展的接触,方面自定义一些常用的功能代码。这在java编程中,通常是放到util类中。在Kotlin编程,通过扩展可以实现工具类的作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐