#android #kotlin #field
#Android #kotlin #поле
Вопрос:
Прежде всего, я прочитал ссылку: Резервные поля
Я не уверен, что понял из ссылки, хотя я видел пример:
будет ли создано резервное поле для непубличного свойства?
Ответ №1:
Это не имеет ничего общего с public / private.
Резервное поле создается всегда, если нет пользовательского средства получения (и установки для var
), и оно (ни одно из них) не используется field
. Резервное поле — это единственный способ сохранить значение свойства, независимо от того, является ли оно общедоступным. Когда ни получатель, ни установщик не ссылаются field
, только тогда оно не будет сгенерировано.
В этом примере свойств резервного копирования (дублируется ниже) _table
свойство имеет поле резервного копирования, поскольку оно использует реализацию свойства по умолчанию. У table
свойства нет резервного поля, потому что оно не использует его в своем получателе.
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")
}