Sobes.tech
Middle

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
}