Sobes.tech
Junior

O que são funções de extensão em Kotlin?

sobes.tech IA

Resposta da IA

As funções de extensão são funções que permitem adicionar nova funcionalidade a classes existentes sem modificar o seu código fonte e sem recorrer à herança.

São declaradas fora da classe e ligadas a ela através da sintaxe <ClasseAção>.função<Parâmetros>. Dentro da função de extensão, this refere-se à instância da classe para a qual ela é chamada.

Exemplo:

// Declaração de uma função de extensão para a classe String
fun String.addGreeting(): String {
    return "Olá, $this!"
}

fun main() {
    val name = "Mundo"
    // Chamada da função de extensão
    println(name.addGreeting()) // Vai exibir "Olá, Mundo!"
}

Principais vantagens:

  • Clareza do código: Não é necessário criar classes utilitárias com métodos estáticos ou herdar classes apenas para adicionar funcionalidades.
  • Legibilidade: As chamadas às funções de extensão parecem métodos normais da classe.
  • Modularidade: Funcionalidades podem ser adicionadas em um escopo local.

Restrições:

  • Funções de extensão não têm acesso a membros privados ou protegidos da classe.
  • Em caso de conflito entre um método da classe e uma função de extensão com a mesma assinatura, prevalece o método da classe.