Kā izmantot 'backing fields' Kotlin?
sobes.tech AI
Atbilde no AI
Aizsarglauki ('backing fields') automātiski ģenerē kompilators, izmantojot standartus getterus/setterus, un tiem nav nepieciešama skaidra deklarācija. Tie tiek izmantoti īpašības vērtības glabāšanai.
Īpašas 'backing fields' izmantošana ir reti nepieciešama, piemēram, gadījumos, kad vēlaties pielāgot getter vai setter un vienlaikus atsaukties uz pašu īpašības vērtību, nevis izsaukt getteru, kas var novest pie rekursijas.
Lai tieši piekļūtu 'backing field' gettera vai settera iekšienē, tiek izmantots identifikators field.
class MyClass {
var counter = 0 // Kompilators ģenerēs 'backing field' šai īpašībai
set(value) {
// Nosacījuma pārbaude pirms piešķiršanas
if (value >= 0) {
// Skaidra piekļuve 'backing field'
field = value
}
}
}
'Backing field' netiek ģenerēts, ja nav īpašības, kas to izmanto (piemēram, abstraktās īpašības vai interfeisa īpašības), vai ja getteris un setteris ir pilnībā pielāgoti un neizmanto kompilatora ģenerēto 'backing field'.
Piemērs, kur 'backing field' netiek ģenerēts:
interface MyInterface {
val abstractProperty: String // Bez backing field
}
class AnotherClass {
val computedProperty: Int
get() = (1 + 2) // Getteris neizmanto backing field, nav backing field
}