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
}