Sobes.tech
Middle

Wie verwendet man 'backing fields' in Kotlin?

sobes.tech KI

Antwort von AI

Die 'Backing Fields' ('Unterstützungsfelder') werden vom Compiler automatisch generiert, wenn Standard-Getter/Setter verwendet werden, und erfordern keine explizite Deklaration. Sie werden zum Speichern des Werts der Eigenschaft verwendet.

Die explizite Verwendung von 'Backing Fields' ist in seltenen Fällen erforderlich, z.B. wenn man einen Getter oder Setter anpassen möchte und dabei auf den Wert der Eigenschaft selbst verweist, anstatt den Getter aufzurufen, was zu einer Rekursion führen könnte.

Um explizit auf das 'Backing Field' innerhalb eines Getters oder Setters zuzugreifen, verwendet man den Bezeichner field.

class MyClass {
    var counter = 0 // Der Compiler generiert ein Backing Field für diese Eigenschaft
        set(value) {
            // Bedingung vor der Zuweisung prüfen
            if (value >= 0) {
                // Expliziter Zugriff auf das Backing Field
                field = value
            }
        }
}

Das 'Backing Field' wird nicht generiert, wenn keine Eigenschaft es verwendet (z.B. bei abstrakten Eigenschaften oder Schnittstellen-Eigenschaften), oder wenn der Getter und Setter vollständig angepasst sind und das vom Compiler generierte 'Backing Field' nicht verwenden.

Beispiel, bei dem kein 'Backing Field' generiert wird:

interface MyInterface {
    val abstractProperty: String // Kein Backing Field
}

class AnotherClass {
    val computedProperty: Int
        get() = (1 + 2) // Getter verwendet kein Backing Field, kein Backing Field vorhanden
}