Sobes.tech
Middle

Kuidas kasutada 'backing fields' Kotlinis?

sobes.tech AI

Vastus AI-lt

Toetavad väljad ('backing fields') genereeritakse automaatselt kompilaatorilt, kasutades standardseid getterite/setterite ja ei nõua selget deklaratsiooni. Need kasutatakse omaduse väärtuse salvestamiseks.

'Backing fields'-i selge kasutamine on haruldane, näiteks siis, kui soovite kohandada getterit või setterit ja samal ajal viidata omaduse väärtusele ise, mitte kutsuda getterit, mis võib põhjustada rekursiooni.

Getteri või setteri sees otsese juurdepääsu 'backing field'-ile kasutades identifikaatorit field.

class MyClass {
    var counter = 0 // Kompilaator genereerib selle omaduse jaoks 'backing field'-i
        set(value) {
            // Tingimuse kontroll enne määramist
            if (value >= 0) {
                // Selge juurdepääs 'backing field'-ile
                field = value
            }
        }
}

'Backing field' ei genereerita omaduse jaoks, kui seda ei kasuta ükski omadus (näiteks abstraktsete omaduste või liidese omaduste puhul) või kui getter ja setter on täielikult kohandatud ning ei kasuta kompilaatori poolt genereeritud 'backing field'-i.

Näide, kus 'backing field' ei genereerita:

interface MyInterface {
    val abstractProperty: String // Ilma backing field'ita
}

class AnotherClass {
    val computedProperty: Int
        get() = (1 + 2) // Getter ei kasuta backing field'i, backing field puudub
}