Sobes.tech
Junior

Čo môžeš povedať o vlastnostiach a tiež o metódach get a set v Kotlin?

sobes.tech AI

Odpoveď od AI

V Kotlin vlastnosti predstavujú kombináciu poľa a zodpovedajúceho getteru a settera.

Definícia vlastnosti:

class MyClass {
    var mutableProperty: String = "default"
    val immutableProperty: Int = 10
}

Tu je mutableProperty meniteľná vlastnosť s predvoleným getterom a setterom. immutableProperty je nezmeniteľná vlastnosť iba s predvoleným getterom.

Jasné definovanie getteru a settera:

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Používateľský getter
        set(value) {
            field = value.toLowerCase() // Používateľský setter
        }

    val computedProperty: Int
        get() = (1..10).random() // Vypočítavaná vlastnosť, nemá pole
}
  • field - spätná referencia na pole vlastnosti vnútri getteru a settera. Používa sa iba pre meniteľné vlastnosti (var).
  • Gettery a settery môžu byť prispôsobené, vykonávajúc dodatočnú logiku pri prístupe alebo zmene vlastnosti.
  • Vypočítavané vlastnosti (computedProperty) nemajú vlastné pole a vždy počítajú hodnotu pri prístupe.

Kľúčové body:

  • V Kotlin nie je potrebné explicitne vytvárať gettery a settery pre každé pole, ako v Jave. Sú automaticky generované.
  • Vlastnosti sú dostupné cez bodovú notáciu (instance.propertyName).
  • Explicitné definovanie gettera a settera umožňuje pridať logiku pri prístupe alebo zmene vlastnosti.
  • Gettery pre val vlastnosť musia vždy vracať hodnotu rovnakého typu.
  • Settery pre var vlastnosť prijímajú parameter rovnakého typu.

Porovnanie vlastností v Kotlin a polí + metód v Jave:

Kotlin vlastnosť Java pole + metódy Popis
var myProperty: Typ private Typ myProperty; + public Typ getMyProperty() + public void setMyProperty(Typ value) Meniteľná vlastnosť s automatickým getterom a setterom.
val myProperty: Typ private Typ myProperty; + public Typ getMyProperty() Nezmeniteľná vlastnosť iba s automatickým getterom.
Prispôsobený getter/setter Ručne napísaná logika Pridanie používateľskej logiky pri prístupe alebo zmene.
Vypočítavaná vlastnosť Verejná metóda, ktorá vracia hodnotu Hodnota vlastnosti sa vypočíta pri každom požiadavku.