Junior
O que podes contar sobre as propriedades e também os métodos get e set em Kotlin?
sobes.tech IA
Resposta da IA
Em Kotlin, as propriedades são uma combinação de um campo e o respetivo getter e setter.
Definição de propriedade:
class MyClass {
var mutableProperty: String = "default"
val immutableProperty: Int = 10
}
Aqui, mutableProperty é uma propriedade mutável com getter e setter padrão. immutableProperty é uma propriedade imutável apenas com getter padrão.
Definição explícita de getter e setter:
class MyClass {
var customProperty: String = ""
get() = field.toUpperCase() // Getter personalizado
set(value) {
field = value.toLowerCase() // Setter personalizado
}
val computedProperty: Int
get() = (1..10).random() // Propriedade calculada, sem campo
}
field- referência ao campo da propriedade dentro do getter e setter. Usado apenas para propriedades mutáveis (var).- Os getters e setters podem ser personalizados, realizando lógica adicional ao aceder ou modificar a propriedade.
- As propriedades calculadas (
computedProperty) não têm um campo próprio e sempre calculam o seu valor ao aceder.
Pontos-chave:
- Em Kotlin, não é necessário criar explicitamente getters e setters para cada campo, como em Java. São gerados automaticamente.
- As propriedades acessam-se através da notação de ponto (
instancia.nomePropriedade). - A definição explícita de getter e setter permite adicionar lógica ao aceder ou modificar a propriedade.
- Os getters para propriedades
valdevem sempre devolver um valor do mesmo tipo. - Os setters para propriedades
varaceitam um parâmetro do mesmo tipo.
Comparação de propriedades em Kotlin e campos+métodos em Java:
| Propriedade Kotlin | Campo + Métodos em Java | Descrição |
|---|---|---|
var minhaPropriedade: Tipo |
private Tipo minhaPropriedade; + public Tipo getMinhaPropriedade() + public void setMinhaPropriedade(Tipo valor) |
Propriedade mutável com getter e setter automáticos. |
val minhaPropriedade: Tipo |
private Tipo minhaPropriedade; + public Tipo getMinhaPropriedade() |
Propriedade imutável apenas com getter automático. |
| Getter/Setter personalizado | Escrita explícita de lógica | Adicionar lógica personalizada ao aceder/modificar. |
| Propriedade calculada | Método explícito que devolve valor | O valor da propriedade é calculado a cada consulta. |