Sobes.tech
Junior

Co můžeš říct o vlastnostech a také o metodách get a set v Kotlinu?

sobes.tech AI

Odpověď od AI

V Kotlinu představují vlastnosti kombinaci pole a odpovídajícího getteru a setteru.

Definice vlastnosti:

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

Zde je mutableProperty měnitelná vlastnost s výchozím getterem a setterem. immutableProperty je neměnitelná vlastnost pouze s výchozím getterem.

Explicitní definice getteru a setteru:

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Vlastní getter
        set(value) {
            field = value.toLowerCase() // Vlastní setter
        }

    val computedProperty: Int
        get() = (1..10).random() // Vypočítávaná vlastnost, nemá pole
}
  • field - odkaz na pole vlastnosti uvnitř getteru a setteru. Používá se pouze pro měnitelné vlastnosti (var).
  • Gettery a settery mohou být přizpůsobeny, provádějící dodatečnou logiku při přístupu nebo změně vlastnosti.
  • Vypočítávané vlastnosti (computedProperty) nemají vlastní pole a vždy počítají hodnotu při přístupu.

Klíčové body:

  • V Kotlinu není nutné explicitně vytvářet gettery a settery pro každé pole, jsou generovány automaticky.
  • Vlastnosti jsou přístupné přes tečkovou notaci (instance.nazevVlastnosti).
  • Explicitní definice getteru a setteru umožňuje přidat logiku při přístupu nebo změně.
  • Gettery pro val vlastnosti musí vždy vracet hodnotu stejného typu.
  • Settery pro var vlastnosti přijímají parametr stejného typu.

Porovnání vlastností v Kotlinu a polí+metod v Javě:

Kotlin vlastnost Java pole + metody Popis
var mojeVlastnost: Typ private Typ mojeVlastnost; + public Typ getMojeVlastnost() + public void setMojeVlastnost(Typ hodnota) Měnitelná vlastnost s automatickým getterem a setterem.
val mojeVlastnost: Typ private Typ mojeVlastnost; + public Typ getMojeVlastnost() Neměnitelná vlastnost pouze s automatickým getterem.
Přizpůsobený getter/setter Ručně psaná logika Přidání vlastní logiky při přístupu nebo změně.
Vypočítávaná vlastnost Explicitní metoda vracející hodnotu Hodnota vlastnosti se počítá při každém požadavku.