Hoe gebruik je 'backing fields' in Kotlin?
sobes.tech AI
Antwoord van AI
De 'backing fields' ('ondersteuningsvelden') worden automatisch gegenereerd door de compiler bij het gebruik van standaard getters/setters en vereisen geen expliciete declaratie. Ze worden gebruikt om de waarde van de eigenschap op te slaan.
Het expliciet gebruiken van 'backing fields' is zeldzaam nodig, bijvoorbeeld wanneer je een getter of setter wilt aanpassen en tegelijkertijd naar de waarde van de eigenschap zelf verwijst, in plaats van de getter aan te roepen, wat tot recursie kan leiden.
Om expliciet toegang te krijgen tot het 'backing field' binnen een getter of setter, wordt de identifier field gebruikt.
class MyClass {
var counter = 0 // De compiler genereert een backing field voor deze eigenschap
set(value) {
// Controleer de voorwaarde voordat je toewijst
if (value >= 0) {
// Expliciete toegang tot het backing field
field = value
}
}
}
Het 'backing field' wordt niet gegenereerd voor een eigenschap als er geen eigenschap is die het gebruikt (bijvoorbeeld voor abstracte eigenschappen of interface-eigenschappen), of als de getter en setter volledig aangepast zijn en het door de compiler gegenereerde 'backing field' niet gebruiken.
Voorbeeld waar het 'backing field' niet wordt gegenereerd:
interface MyInterface {
val abstractProperty: String // Geen backing field
}
class AnotherClass {
val computedProperty: Int
get() = (1 + 2) // Getter gebruikt geen backing field, geen backing field
}