Sobes.tech
Junior — Middle

Quais são as limitações das funções de extensão na linguagem Kotlin?

sobes.tech IA

Resposta da IA

No Kotlin, as funções de extensão têm as seguintes limitações:

  • Não podem adicionar novas propriedades ou estado às classes. As extensões funcionam apenas com funções.
  • As extensões não modificam a classe real, mas são resolvidas estaticamente. Isso significa que a chamada à extensão é determinada pelo tipo da variável durante a compilação, não pelo tipo real do objeto em tempo de execução.
  • Não é possível sobrescrever métodos existentes da classe com extensões. Se já existir um método com esse nome, será chamado o método da classe.
  • As extensões não podem ser declaradas dentro de funções locais. Devem ser declaradas ao nível do arquivo, classe ou objeto.

Exemplo de resolução estática de extensões:

open class Base
class Derived : Base()

fun Base.foo() = "Base"
fun Derived.foo() = "Derived"

fun printFoo(b: Base) {
    println(b.foo())
}

printFoo(Derived()) // Vai imprimir "Base", pois a extensão é escolhida pelo tipo Base

É importante considerar isso ao usar funções de extensão em Kotlin.