Kotlin語法摘要(一)

1.Getters 和 Setters

聲明一個屬性的完整語法如下:

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

2.只讀屬性的聲明語法和可變屬性的聲明語法相比有兩點(diǎn)不同: 它以 val 而不是 var 開頭,不允許 setter 函數(shù):

val simple: Int? // 類型為 Int ,默認(rèn)實(shí)現(xiàn) getter ,但必須在構(gòu)造函數(shù)中初始化
val inferredType = 1 // 類型為 Int 類型,默認(rèn)實(shí)現(xiàn) getter

3.備用字段

在 kotlin 中類不可以有字段。然而當(dāng)使用自定義的訪問器時有時候需要備用字段。出于這些原因 kotlin 使用 field 關(guān)鍵詞提供了自動備用字段,

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() //參數(shù)類型是推導(dǎo)出來的
return _table ?: throw AssertionError("Set to null by another thread")
}

5.編譯時常量

那些在編譯時就能知道具體值的屬性可以使用 const 修飾符標(biāo)記為編譯時常量. 這種屬性需要同時滿足以下條件:

  • 在top-level聲明的 或者 是一個object的成員(Top-level or member of an object)
  • 以String或基本類型進(jìn)行初始化
  • 沒有自定義getter
    這種屬性可以被當(dāng)做注解使用:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容