Sobes.tech
Middle

Comment utiliser les 'backing fields' en Kotlin?

sobes.tech IA

Réponse de l'IA

Les champs de soutien ('backing fields') sont générés automatiquement par le compilateur lors de l'utilisation de getters/setters standard et ne nécessitent pas de déclaration explicite. Ils sont utilisés pour stocker la valeur de la propriété.

L'utilisation explicite des 'backing fields' est nécessaire dans de rares cas, par exemple, lorsque vous souhaitez personnaliser un getter ou un setter tout en faisant référence à la valeur de la propriété elle-même, plutôt qu'à l'appel du getter, ce qui pourrait entraîner une récursion.

Pour accéder explicitement au 'backing field' à l'intérieur d'un getter ou d'un setter, on utilise l'identificateur field.

class MyClass {
    var counter = 0 // Le compilateur générera un backing field pour cette propriété
        set(value) {
            // Vérification de la condition avant l'affectation
            if (value >= 0) {
                // Accès explicite au backing field
                field = value
            }
        }
}

Le 'backing field' n'est pas généré pour une propriété si aucune propriété ne l'utilise (par exemple, pour des propriétés abstraites ou d'interface), ou si le getter et le setter sont entièrement personnalisés et n'utilisent pas le 'backing field' généré par le compilateur.

Exemple où le 'backing field' n'est pas généré :

interface MyInterface {
    val abstractProperty: String // Pas de backing field
}

class AnotherClass {
    val computedProperty: Int
        get() = (1 + 2) // Le getter n'utilise pas de backing field, il n'y a pas de backing field
}