08-扩展属性
6.2.4 扩展属性
除了函数,Kotlin还支持对属性进行扩展。代码如下。
fun main(arg:Array<String>){
var list=listOf(1,2,3,4)
println(list.lastIndex) //输出3
}
//给List类扩展一个lastIndex属性
val <T> List<T>.lastIndex:Int get(){
return this.size-1
}
扩展属性允许定义在类或者Kotlin文件中,但不允许定义在函数中。因为扩展属性不能有初始化器,所以只能由显式提供的getter/setter定义,而且扩展属性只能被声明为val。代码如下。
val Foo.bar = 1 // 编译错误,扩展属性不能有初始化器
和扩展函数一样,扩展属性并不会真正给类添加成员属性,而且扩展属性只能够通过明确提供getter和setter方法来进行定义。