当前位置:嗨网首页>书籍在线阅读

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方法来进行定义。