Sobes.tech
Middle

Hogyan használjuk a 'backing fields'-et Kotlinben?

sobes.tech MI

Válasz az MI-től

A 'backing fields' ('támogatási mezők') automatikusan generálódnak a fordító által, amikor standard getter/setter párokat használunk, és nem igényelnek kifejezett deklarációt. Ezek a tulajdonság értékének tárolására szolgálnak.

A 'backing fields' kifejezett használata ritkán szükséges, például akkor, amikor egy getter vagy setter testreszabására van szükség, miközben a tulajdonság értékére hivatkozunk, a getter hívása helyett, ami rekurzióhoz vezethet.

A getter vagy setter belsejében a 'backing field'-hoz való közvetlen hozzáféréshez a field azonosítót használjuk.

class MyClass {
    var counter = 0 // A fordító generál egy backing field-et ehhez a tulajdonsághoz
        set(value) {
            // Feltétel ellenőrzése az érték hozzárendelése előtt
            if (value >= 0) {
                // Közvetlen hozzáférés a backing field-hez
                field = value
            }
        }
}

A 'backing field' nem generálódik, ha nincs olyan tulajdonság, amely használja (például absztrakt tulajdonságok vagy interfész tulajdonságok esetén), vagy ha a getter és setter teljesen testreszabott, és nem használja a fordító által generált 'backing field'-et.

Példa, ahol nem generálódik 'backing field':

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

class AnotherClass {
    val computedProperty: Int
        get() = (1 + 2) // A getter nem használ backing field-et, nincs backing field
}