Kaip naudoti 'backing fields' Kotlin?
sobes.tech AI
Atsakymas iš AI
Apsauginiai laukai ('backing fields') automatiškai generuojami kompiliatoriaus naudojant standartinius getterius/setterius ir nereikalauja aiškaus deklaravimo. Jie naudojami savybės reikšmei saugoti.
Aiškus 'backing fields' naudojimas yra retas atvejis, pavyzdžiui, kai norima pritaikyti getterį ar setterį ir tuo pačiu nurodyti į savybės reikšmę, o ne iškviesti getterį, kas gali sukelti rekursiją.
Norint aiškiai pasiekti 'backing field' getterio ar setterio viduje, naudojamas identifikatorius field.
class MyClass {
var counter = 0 // Kompiliatorius sugeneruos backing field šiai savybei
set(value) {
// Sąlygos patikrinimas prieš priskyrimą
if (value >= 0) {
// Aiškus pasiekimas prie backing field
field = value
}
}
}
'Backing field' nėra sugeneruojamas, jei nėra savybės, kuri ją naudoja (pavyzdžiui, abstrakčios savybės ar sąsajos savybės), arba jei getteris ir setteris yra visiškai pritaikyti ir nenaudoja kompiliatoriaus sugeneruoto 'backing field'.
Pavyzdys, kur 'backing field' nėra sugeneruojamas:
interface MyInterface {
val abstractProperty: String // Be backing field
}
class AnotherClass {
val computedProperty: Int
get() = (1 + 2) // Getteris nenaudoja backing field, nėra backing field
}