Sobes.tech
Junior — Middle

¿La función de extensión en Kotlin es siempre estática dentro de la implementación?

sobes.tech AI

Respuesta de la IA

Sí, en Kotlin, las funciones de extensión se implementan como métodos estáticos a nivel de bytecode JVM. Aunque sintácticamente parecen métodos añadidos a clases existentes, en realidad no modifican la clase ni tienen acceso a miembros privados.

Esto significa que dentro de la implementación de una función de extensión no hay una referencia a la instancia de la clase (this) en el sentido de los métodos normales. En su lugar, el primer parámetro de la función de extensión es el objeto al que se aplica.

Ejemplo:

fun String.lastChar(): Char = this.get(this.length - 1)

En el bytecode, esto aparecerá como un método estático que recibe un objeto String como parámetro.

Por lo tanto, las funciones de extensión en Kotlin siempre son estáticas en su implementación, aunque parezcan métodos de instancia.