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.