美文网首页
Kotlin语法摘要(一)

Kotlin语法摘要(一)

作者: 江南_烟雨 | 来源:发表于2017-07-25 15:15 被阅读0次

1.Getters 和 Setters

声明一个属性的完整语法如下:

var <propertyName>: <PropertyType> [ = <property_initializer> ]
<getter>
<setter>

2.只读属性的声明语法和可变属性的声明语法相比有两点不同: 它以 val 而不是 var 开头,不允许 setter 函数:

val simple: Int? // 类型为 Int ,默认实现 getter ,但必须在构造函数中初始化
val inferredType = 1 // 类型为 Int 类型,默认实现 getter

3.备用字段

在 kotlin 中类不可以有字段。然而当使用自定义的访问器时有时候需要备用字段。出于这些原因 kotlin 使用 field 关键词提供了自动备用字段,

var counter = 0 // 初始化值会直接写入备用字段
set(value) {
if (value >= 0)
field = value
}

4.备用属性

如果你想要做一些事情但不适合这种 "隐含备用字段" 方案,你可以试着用备用属性的方式:

rivate var _table: Map<String, Int>? = null
public val table: Map<String, Int>
get() {
if (_table == null)
_table = HashMap() //参数类型是推导出来的
return _table ?: throw AssertionError("Set to null by another thread")
}

5.编译时常量

那些在编译时就能知道具体值的属性可以使用 const 修饰符标记为编译时常量. 这种属性需要同时满足以下条件:

  • 在top-level声明的 或者 是一个object的成员(Top-level or member of an object)
  • 以String或基本类型进行初始化
  • 没有自定义getter
    这种属性可以被当做注解使用:

const val SUBSYSTEM_DEPRECATED: String = "This subsystem is deprecated"
@Deprected(SUBSYSTEM_DEPRECATED) fun foo() { ... }

相关文章

网友评论

      本文标题:Kotlin语法摘要(一)

      本文链接:https://www.haomeiwen.com/subject/zrpwkxtx.html