Sobes.tech
Junior

Cosa puoi dire sulle proprietà e anche sui metodi get e set in Kotlin?

sobes.tech AI

Risposta dell'AI

In Kotlin, le proprietà sono una combinazione di un campo e dei relativi getter e setter.

Definizione di proprietà:

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

Qui, mutableProperty è una proprietà mutabile con getter e setter di default. immutableProperty è una proprietà immutabile con solo getter di default.

Definizione esplicita di getter e setter:

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Getter personalizzato
        set(value) {
            field = value.toLowerCase() // Setter personalizzato
        }

    val computedProperty: Int
        get() = (1..10).random() // Proprietà calcolata, senza campo
}
  • field - riferimento al campo della proprietà all'interno del getter e del setter. Usato solo per proprietà mutabili (var).
  • Getter e setter possono essere personalizzati, eseguendo logica aggiuntiva durante l'accesso o la modifica della proprietà.
  • Proprietà calcolate (computedProperty) non hanno un campo proprio e calcolano sempre il loro valore all'accesso.

Punti chiave:

  • In Kotlin, non è necessario creare esplicitamente getter e setter per ogni campo, poiché vengono generati automaticamente.
  • Le proprietà sono accessibili tramite notazione a punto (istanza.nomeProprietà).
  • La definizione esplicita di getter e setter permette di aggiungere logica durante l'accesso o la modifica.
  • I getter per le proprietà val devono sempre restituire un valore dello stesso tipo.
  • I setter per le proprietà var accettano un parametro dello stesso tipo.

Confronto tra proprietà in Kotlin e campi+metodi in Java:

Proprietà Kotlin Campo + Metodi in Java Descrizione
var miaProprieta: Tipo private Tipo miaProprieta; + public Tipo getMiaProprieta() + public void setMiaProprieta(Tipo valore) Proprietà mutabile con getter e setter automatici.
val miaProprieta: Tipo private Tipo miaProprieta; + public Tipo getMiaProprieta() Proprietà immutabile solo con getter automatico.
Getter/Setter personalizzato Scrittura logica esplicita Aggiunta di logica personalizzata durante accesso/modifica.
Proprietà calcolata Metodo esplicito che restituisce valore Il valore della proprietà viene calcolato ad ogni richiesta.