Sobes.tech
Middle

¿Cómo usar 'backing fields' en Kotlin?

sobes.tech AI

Respuesta de la IA

Los campos de respaldo ('backing fields') se generan automáticamente por el compilador al usar getters/setters estándar y no requieren declaración explícita. Se utilizan para almacenar el valor de la propiedad.

El uso explícito de 'backing fields' es necesario en casos raros, por ejemplo, cuando se desea personalizar un getter o setter y al mismo tiempo hacer referencia al valor de la propiedad en sí, en lugar de llamar al getter, lo que podría provocar una recursión.

Para acceder explícitamente al 'backing field' dentro de un getter o setter, se usa el identificador field.

class MyClass {
    var counter = 0 // El compilador generará un backing field para esta propiedad
        set(value) {
            // Verificación de condición antes de asignar
            if (value >= 0) {
                // Acceso explícito al backing field
                field = value
            }
        }
}

El 'backing field' no se genera para una propiedad si no hay una propiedad que lo utilice (por ejemplo, para propiedades abstractas o de interfaz), o si el getter y el setter están completamente personalizados y no usan el 'backing field' generado por el compilador.

Ejemplo donde no se genera 'backing field':

interface MyInterface {
    val abstractProperty: String // Sin backing field
}

class AnotherClass {
    val computedProperty: Int
        get() = (1 + 2) // El getter no usa backing field, no hay backing field
}