Junior — Middle
A função de extensão em Kotlin é sempre estática dentro da implementação?
sobes.tech IA
Resposta da IA
Sim, em Kotlin, as funções de extensão são implementadas como métodos estáticos ao nível do bytecode JVM. Embora sintaticamente pareçam métodos adicionados às classes existentes, na verdade elas não modificam a classe nem têm acesso a membros privados.
Isso significa que dentro da implementação de uma função de extensão não há uma referência à instância da classe (this) no sentido dos métodos normais. Em vez disso, o primeiro parâmetro da função de extensão é o objeto ao qual ela se aplica.
Exemplo:
fun String.lastChar(): Char = this.get(this.length - 1)
No bytecode, isso aparecerá como um método estático que aceita um objeto String como parâmetro.
Assim, as funções de extensão em Kotlin são sempre estáticas em sua implementação, embora pareçam métodos de instância.