Sobes.tech
Middle

Ինչպես օգտագործել 'backing fields' Kotlin-ում?

sobes.tech AI

Պատասխան AI-ից

Աջակցող դաշտեր ('backing fields') ավտոմատորեն ստեղծվում են կոմպիլյատորով, երբ օգտագործվում են ստանդարտ getter/setter-ներ և չեն պահանջում բացահայտ հայտարարում: Դրանք օգտագործվում են հատկության արժեքը պահելու համար:

Բացահայտ օգտագործումը 'backing fields'-ի անհրաժեշտություն է հազվադեպ, օրինակ, երբ ցանկանում եք անհատականացնել getter կամ setter և միաժամանակ հղում կատարել սեփական հատկության արժեքին, այլ ոչ թե կանչել getter-ը, ինչը կարող է հանգեցնել ռեկուրսիային:

Ճշգրիտ մուտք գործելու համար 'backing field'-ին getter կամ setter-ի ներսում օգտագործվում է field նույնականացուցիչը:

class MyClass {
    var counter = 0 // Կոմպիլյատորը կստեղծի backing field այս հատկության համար
        set(value) {
            // Շրջանառության պայմանը ստուգելուց առաջ
            if (value >= 0) {
                // Բացահայտ մուտք backing field-ին
                field = value
            }
        }
}

'Backing field'-ը չի ստեղծվում հատկության համար, եթե այն չի օգտագործվում (օրինակ, աբստրակտ հատկությունների կամ ինտերֆեյսի հատկությունների համար), կամ եթե getter և setter-ը լրիվ անհատականացված են և չեն օգտագործում կոմպիլյատորով ստեղծված 'backing field'-ը:

Օրինակ, որտեղ 'backing field'-ը չի ստեղծվում:

interface MyInterface {
    val abstractProperty: String // Չի պարունակում backing field
}

class AnotherClass {
    val computedProperty: Int
        get() = (1 + 2) // Getter-ը չի օգտագործում backing field, չկա backing field
}