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
}