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
valvlastnosť musia vždy vracať hodnotu rovnakého typu. - Settery pre
varvlastnosť 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. |