Sobes.tech
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 val devem sempre devolver um valor do mesmo tipo.
  • Os setters para propriedades var aceitam 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.