Backing field — это автоматически сгенерированное хранилище, которое Kotlin создаёт для свойства, чтобы хранить его фактическое значение в памяти. Доступ к нему возможен только внутри пользовательских аксессоров свойства с помощью специального идентификатора field.
Без field, если ты будешь обращаться к свойству напрямую внутри его собственного аксессора, произойдёт бесконечная рекурсия, потому что каждое обращение снова вызывает геттер или сеттер.
Использование field разрывает этот цикл, обращаясь напрямую к сохранённому значению вместо вызова аксессора.
var counter: Int = 0
set(value) {
if (value >= 0) field = value
}
field ссылается напрямую на хранимое значениеcounter = 5 активирует сеттер, который безопасно присваивает значение через fieldfield используется внутри аксессора или когда нет пользовательского аксессораОпорное поле в Kotlin автоматически генерируется для каждого объявления свойства, независимо от того, используется оно пользовательскими аксессорами или нет.
Новый — ещё не проверен сообществом
Вы