Sobes.tech
Middle

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
}