Jak používat 'backing fields' v Kotlinu?
sobes.tech AI
Odpověď od AI
Podpůrná pole ('backing fields') jsou automaticky generována kompilátorem při použití standardních getterů/setterů a nevyžadují explicitní deklaraci. Slouží k uložení hodnoty vlastnosti.
Explicitní použití 'backing fields' je vzácné, například když chcete upravit getter nebo setter a zároveň odkazovat na hodnotu vlastnosti samotné, namísto volání getteru, což by mohlo vést k rekurzi.
Pro explicitní přístup k 'backing field' uvnitř getteru nebo setteru se používá identifikátor field.
class MyClass {
var counter = 0 // Kompilátor vygeneruje backing field pro tuto vlastnost
set(value) {
// Kontrola podmínky před přiřazením
if (value >= 0) {
// Explicitní přístup k backing field
field = value
}
}
}
'Backing field' není generováno pro vlastnost, pokud žádná vlastnost jej nepoužívá (například u abstraktních vlastností nebo vlastností rozhraní), nebo pokud jsou getter a setter plně přizpůsobeny a nepoužívají generované 'backing field'.
Příklad, kde 'backing field' není generováno:
interface MyInterface {
val abstractProperty: String // Bez backing field
}
class AnotherClass {
val computedProperty: Int
get() = (1 + 2) // Getter nepoužívá backing field, žádné backing field
}