Sobes.tech
Junior

Co możesz powiedzieć o właściwościach oraz metodach get i set w Kotlin?

sobes.tech AI

Odpowiedź od AI

W Kotlinie właściwości są połączeniem pola i odpowiadającego mu getter i setter.

Definicja właściwości:

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

Tutaj mutableProperty jest właściwością zmienną z domyślnym getterem i setterem. immutableProperty jest właściwością niezmienną tylko z domyślnym getterem.

Jawne definiowanie getterów i setterów:

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

    val computedProperty: Int
        get() = (1..10).random() // Właściwość obliczana, nie ma pola
}
  • field - odwołanie do pola właściwości wewnątrz getter i setter. Używane tylko dla właściwości zmiennych (var).
  • Gettery i settery mogą być dostosowane, wykonując dodatkową logikę podczas dostępu lub zmiany właściwości.
  • Właściwości obliczane (computedProperty) nie mają własnego pola i zawsze obliczają wartość przy dostępie.

Kluczowe punkty:

  • W Kotlinie nie ma potrzeby jawnego tworzenia getterów i setterów dla każdego pola, są one generowane automatycznie.
  • Właściwości są dostępne przez notację kropkową (instancja.nazwaWłaściwości).
  • Jawne definiowanie getterów i setterów pozwala dodać logikę przy dostępie lub zmianie właściwości.
  • Gettery dla val zawsze muszą zwracać wartość tego samego typu.
  • Settery dla var przyjmują parametr tego samego typu.

Porównanie właściwości w Kotlinie i pól+metod w Javie:

Właściwość w Kotlinie Pole + Metody w Javie Opis
var mojaWłaściwość: Typ private Typ mojaWłaściwość; + public Typ getMojaWłaściwość() + public void setMojaWłaściwość(Typ wartość) Właściwość zmienna z automatycznym getterem i setterem.
val mojaWłaściwość: Typ private Typ mojaWłaściwość; + public Typ getMojaWłaściwość() Właściwość niezmienna z automatycznym getterem.
Niestandardowy getter/setter Jawne pisanie logiki Dodanie własnej logiki przy dostępie lub zmianie.
Właściwość obliczana Jawna metoda zwracająca wartość Wartość właściwości jest obliczana przy każdym odwołaniu.