Поле field

Ключевое слово field используется внутри сеттера пользовательского свойства для обращения к его исходному (резервному) значению. Оно позволяет получить доступ к данным свойства до изменения или после него. field доступно только в пределах геттера или сеттера свойства.

Синтаксис

kotlinvar propertyName: Type = initialValue
  get() = field
  set(value) {
    field = value
  }
kotlinval propertyName: Type
  get() = field

Пример

Создадим свойство с пользовательским сеттером, который использует field для доступа к исходному значению:

kotlinvar count: Int = 0
  set(value) {
    println("Old value: $field")
    field = value
    println("New value: $field")
  }

count = 5

Результат выполнения кода:

kotlinOld value: 0
New value: 5

Пример

Использование field для добавления валидации при установке значения:

kotlinvar age: Int = 0
  set(value) {
    if (value >= 0) {
      field = value
    } else {
      println("Age cannot be negative")
    }
  }

age = 25
println(age)
age = -5
println(age)

Результат выполнения кода:

kotlin25
Age cannot be negative
25

Пример

Использование field в вычисляемом свойстве:

kotlinvar name: String = ""
  get() = field.uppercase()
  set(value) {
    field = value.trim()
  }

name = "  john  "
println(name)

Результат выполнения кода:

kotlinString "JOHN"

Пример

Использование field для свойства только для чтения:

kotlinval computedValue: Int
  get() = field * 2

// Это вызовет ошибку компиляции
// computedValue = 10

Результат выполнения кода:

kotlinCompilation error: Backing field is not accessible

Смотрите также

  • ключевое слово val,
    которое объявляет свойства только для чтения
  • ключевое слово var,
    которое объявляет изменяемые свойства
  • ключевое слово get,
    которое определяет геттер для свойства
  • ключевое слово set,
    которое определяет сеттер для свойства