Sobes.tech
Junior

Šta možeš reći o svojstvima, kao i o metodama get i set u Kotlinu?

sobes.tech АИ

Одговор од АИ

U Kotlin, svojstva predstavljaju kombinaciju polja i odgovarajućeg gettera i settera.

Definicija svojstva:

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

Ovde je mutableProperty promenjivo svojstvo sa podrazumevanim getterom i setterom. immutableProperty je nepromenjivo svojstvo samo sa podrazumevanim getterom.

Jasno definisanje gettera i settera:

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

    val computedProperty: Int
        get() = (1..10).random() // Izračunljivo svojstvo, nema polje
}
  • field - povratna referenca na polje svojstva unutar gettera i settera. Koristi se samo za promenjiva svojstva (var).
  • Getteri i setteri mogu biti prilagođeni, izvršavajući dodatnu logiku pri pristupu ili promeni svojstva.
  • Izračunljiva svojstva (computedProperty) nemaju sopstveno polje i uvek računaju vrednost pri pristupu.

Ključne tačke:

  • U Kotlinu nije potrebno eksplicitno kreirati gettere i settere za svako polje, kao u Javi. Oni se automatski generišu.
  • Svojstva su dostupna putem tačke notacije (instance.propertyName).
  • Eksplicitno definisanje gettera i settera omogućava dodavanje logike pri pristupu ili promeni svojstva.
  • Getteri za val svojstvo uvek moraju vraćati vrednost istog tipa.
  • Setteri za var svojstvo prihvataju parametar istog tipa.

Poređenje svojstava u Kotlinu i polja + metode u Javi:

Kotlin svojstvo Java polje + metode Opis
var myProperty: Tip private Tip myProperty; + public Tip getMyProperty() + public void setMyProperty(Tip value) Promenjivo svojstvo sa automatskim getterom i setterom.
val myProperty: Tip private Tip myProperty; + public Tip getMyProperty() Nepromenjivo svojstvo samo sa automatskim getterom.
Prilagođeni getter/setter Ručno napisana logika Dodavanje korisničke logike pri pristupu ili promeni.
Izračunljivo svojstvo Javni metod koji vraća vrednost Vrednost svojstva se računa pri svakom zahtevu.