Kako koristiti 'backing fields' u Kotlinu?
sobes.tech АИ
Одговор од АИ
Podržana polja ('backing fields') automatski se generišu od strane kompajlera kada se koriste standardni getteri/setteri i ne zahtevaju eksplicitnu deklaraciju. Koriste se za skladištenje vrednosti svojstva.
Ekslicitno korišćenje 'backing fields' je retko potrebno, na primer, kada želite da prilagodite getter ili setter i istovremeno da se referišete na vrednost samog svojstva, umesto da pozivate getter, što može dovesti do rekurzije.
Za eksplicitni pristup 'backing field'-u unutar gettera ili settera koristi se identifikator field.
class MyClass {
var counter = 0 // Kompajler će generisati backing field za ovo svojstvo
set(value) {
// Provera uslova pre dodeljivanja
if (value >= 0) {
// Ekslicitni pristup backing field-u
field = value
}
}
}
'Backing field' se ne generiše za svojstvo ako ne postoji svojstvo koje ga koristi (na primer, za apstraktne svojstva ili svojstva interfejsa), ili ako su getter i setter potpuno prilagođeni i ne koriste generisani od strane kompajlera 'backing field'.
Primer gde se 'backing field' ne generiše:
interface MyInterface {
val abstractProperty: String // Nema backing field
}
class AnotherClass {
val computedProperty: Int
get() = (1 + 2) // Getter ne koristi backing field, nema backing field
}