美文网首页
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