Sobes.tech
Junior

Mit tudsz mondani a tulajdonságokról, valamint a get és set módszerekről Kotlinban?

sobes.tech MI

Válasz az MI-től

Kotlinben a tulajdonságok egy mező és a hozzá tartozó getter és setter kombinációját képezik.

Tulajdonság definíció:

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

Itt a mutableProperty egy módosítható tulajdonság alapértelmezett getterrel és setterrel. Az immutableProperty egy változatlan tulajdonság csak alapértelmezett getterrel.

Explicit getter és setter definíció:

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

    val computedProperty: Int
        get() = (1..10).random() // Számított tulajdonság, nincs mező
}
  • field - a mezőre való hivatkozás a getter és setter belsejében. Csak módosítható tulajdonságok (var) esetén használható.
  • A getterek és setterek testreszabhatók, további logikát hajthatnak végre a hozzáférés vagy módosítás során.
  • Számított tulajdonságok (computedProperty) nem rendelkeznek saját mezővel, értéküket minden hozzáféréskor számítják.

Főbb pontok:

  • Kotlinben nem szükséges minden mezőhöz explicit getter és setter, ezek automatikusan generálódnak.
  • A tulajdonságokat pontnotációval (példa.tulajdonságNev) lehet elérni.
  • Az explicit getter és setter lehetővé teszi, hogy logikát adjunk hozzá a hozzáféréshez vagy módosításhoz.
  • A val típusú tulajdonságok getterjeinek mindig ugyanazt a típusú értéket kell visszaadniuk.
  • A var típusú tulajdonságok setterjei ugyanazon típusú paramétert fogadnak.

Különbség a Kotlin tulajdonságok és a Java mezők+metódusok között:

Kotlin Tulajdonság Java Mező + Metódusok Leírás
var tulajdonságom: Típus private Típus tulajdonságom; + public Típus getTulajdonságom() + public void setTulajdonságom(Típus érték) Módosítható tulajdonság automatikus getterrel és setterrel.
val tulajdonságom: Típus private Típus tulajdonságom; + public Típus getTulajdonságom() Változtathatatlan tulajdonság csak automatikus getterrel.
Egyedi getter/setter Kézi logika írása Egyedi logika hozzáadása a hozzáféréshez vagy módosításhoz.
Számított tulajdonság Kifejezett metódus, ami értéket ad vissza A tulajdonság értéke minden kéréskor számítódik.