Ebben a cikkben megtanulja használni a kotlin-i getterek és beállítók használatát egy példa segítségével.
Mielőtt megismerkedne a getterekkel és a szetterekkel, mindenképpen ellenőrizze a Kotlin osztályt és tárgyakat.
A programozásban a getters értékeket használják az ingatlan értékének megszerzésére. Hasonlóképpen, beállítókat használnak az ingatlan értékének beállításához.
Kotlinban a getterek és a beállítók nem kötelezőek, és automatikusan generálódnak, ha nem a programban hozod létre őket.
Hogyan működnek a getterek és a beállítók?
A következő kód Kotlinban
class Person (var név: String = "defaultValue")
egyenértékű
class Person (var név: String = "defaultValue" // getter get () = mező // beállító készlet (érték) (mező = érték))
Amikor példányosítja az Person
osztály objektumát, és inicializálja a név tulajdonságot, akkor az átadódik a beállító paraméter értékének, és a mezőt értékre állítja.
val p = Személy () p.name = "jack"
Most, amikor hozzáfér az objektum név tulajdonságához, a kód miatt mezőt kap get() = field
.
println ("$ (p.name)")
Íme egy működő példa:
fun main(args: Array) ( val p = Person() p.name = "jack" println("$(p.name)") ) class Person ( var name: String = "defaultValue" get() = field set(value) ( field = value ) )
A program futtatásakor a kimenet a következő lesz:
Jack
Alapértelmezés szerint így működnek a getterek és a beállítók. Azonban a tulajdonság értékét módosíthatja (értéket módosíthatja) getterek és beállítók segítségével.
Példa: A tulajdonság értékének megváltoztatása
fun main(args: Array) ( val maria = Girl() maria.actualAge = 15 maria.age = 15 println("Maria: actual age = $(maria.actualAge)") println("Maria: pretended age = $(maria.age)") val angela = Girl() angela.actualAge = 35 angela.age = 35 println("Angela: actual age = $(angela.actualAge)") println("Angela: pretended age = $(angela.age)") ) class Girl ( var age: Int = 0 get() = field set(value) ( field = if (value = 18 && value <= 30) value else value-3 ) var actualAge: Int = 0 )
A program futtatásakor a kimenet a következő lesz:
Maria: tényleges életkor = 15 Maria: színlelt életkor = 18 Angela: tényleges életkor = 35 Angela: színlelt életkor = 32
Itt a ténylegesAge tulajdonság a várakozásoknak megfelelően működik.
Van azonban további logikai beállítók a age tulajdonság értékének módosítására.