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à
valdevono sempre restituire un valore dello stesso tipo. - I setter per le proprietà
varaccettano 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. |