2
我想確定自己訪問的領域,像這樣:我們可以定義我們的訪問器沒有init值嗎?
var item: Item
get() {...}
set(value) {...}
我得到一個錯誤,因爲項目未初始化。我不能添加lateinit,因爲我定義了get和set方法。
我可以選擇是聲明另一個可空場,並使用該字段來實現該項目的存取,這是太愚蠢和冗餘。
所以我想一定有其他的方式來實現這一要求......
更新:
感謝您的答覆。 我想我沒有清楚地表達出來。當我多次閱讀文檔後,我認爲答案是否定的。
我的要求是:是否有更簡單的替代方法來聲明這一點?
private var _table: Map<String, Int>? = null
public 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")
}
我們必須聲明nullabe後盾屬性,以便我們可以自定義訪問器,也離開了現場初始化。