正文:

类可以有属性,你可以定义可变的属性或者不可变的属性(var可变,val不可变)。形如:

public class Address {   public var name: String = ...  public var street: String = ...  public var city: String = ...  public var state: String? = ...  public var zip: String = ...}
使用一个属性,往往是访问其名字。形如:

fun copyAddress(address: Address): Address {  val result = Address() // there's no 'new' keyword in Kotlin  result.name = address.name // accessors are called  result.street = address.street  // ...  return result}

Getters and Setters

语法声明的形式:

var <propertyName>: <PropertyType> [= <property_initializer>]  [<getter>]  [<setter>]
初始化getter和setter是可选的,如果属性的类型如果可以从初始化或从基类成员被覆盖推断出来就可以省略。形如:

var allByDefault: Int? // error: explicit initializer required, default getter and setter impliedvar initialized = 1 // has type Int, default getter and setter
var是可变的可以有getter和setter方法,而val是不可变的不能有setter方法。形如:

val inferredType = 1 // has type Int and a default getter
我们可以编写自定义的getter方法。形如:

val isEmpty: Boolean  get() = this.size == 0
自定义的setter方法。形如:

var stringRepresentation: String  get() = this.toString()  set(value) {    setDataFromString(value) // parses the string and assigns values to other properties  }
如果你只是想改变getter和setter的可见,就可以不去定义它的函数体,形如:

 var setterVisibility: String = "abc" // Initializer required, not a nullable type            private set // the setter is private and has the default implementation

Backing Fields

var counter = 0 // the initializer value is written directly to the backing field            set(value) {                if (value >= 0)                    field = value//这里的field指代的是counter            }

Backing Properties

你也可以将你的set方法返回给其它的属性,形如:
private var _table: Map<String, Int>? = nullpublic val table: Map<String, Int>  get() {    if (_table == null)      _table = HashMap() // Type parameters are inferred    return _table ?: throw AssertionError("Set to null by another thread")  }


更多相关文章

  1. 关于android的反射机制的用法
  2. android 通过经纬度获取地址信息
  3. Android开发常用代码
  4. Android监听按键返回键
  5. 安卓中实现两端对齐,中间fill_parent的方法
  6. Android绘制流程窗口启动流程分析(下)
  7. Android设置布局背景为白色的三种方法
  8. ormlite数据库存放sd卡,android卸载应用保留数据的方法
  9. Android第一行代码学习笔记六----手机多媒体

随机推荐

  1. 使用命令行方式创建和启动android模拟器+
  2. 【转】android sqlite支持的数据类型
  3. Android自动测试之monkeyrunner工具(二)
  4. S5PV210-uboot-fastboot原理
  5. 2.运行我的第一个Android程序,学习四大组
  6. 如何让android的service一直在后台运行
  7. Android开发之语音识别
  8. 禁用GPU硬件加速方法
  9. android 使用xmpp smack openfire实现即
  10. android之基于Echart的图表