Sobes.tech
Middle

Ako používať 'backing fields' v Kotlin?

sobes.tech AI

Odpoveď od AI

Podporované polia ('backing fields') sú automaticky generované kompilátorom pri používaní štandardných getterov/setterov a nevyžadujú explicitné vyhlásenie. Slúžia na uloženie hodnoty vlastnosti.

Explicitné použitie 'backing fields' je zriedkavé, napríklad keď chcete prispôsobiť getter alebo setter a súčasne sa odvolávať na hodnotu samotnej vlastnosti, namiesto volania getteru, čo by mohlo viesť k rekurzii.

Na explicitný prístup k 'backing field' vo vnútri getteru alebo setteru sa používa identifikátor field.

class MyClass {
    var counter = 0 // Kompilátor vygeneruje backing field pre túto vlastnosť
        set(value) {
            // Kontrola podmienky pred priradením
            if (value >= 0) {
                // Priamy prístup k backing field
                field = value
            }
        }
}

'Backing field' sa nevytvára pre vlastnosť, ak nie je vlastnosť, ktorá ho používa (napríklad pre abstraktné vlastnosti alebo vlastnosti rozhraní), alebo ak sú getter a setter úplne prispôsobené a nepoužívajú generované 'backing field'.

Príklad, kde sa 'backing field' nevytvára:

interface MyInterface {
    val abstractProperty: String // Bez backing field
}

class AnotherClass {
    val computedProperty: Int
        get() = (1 + 2) // Getter nevyužíva backing field, žiadne backing field
}