Sobes.tech
Junior — Middle

La funzione di estensione in Kotlin è sempre statica all'interno dell'implementazione?

sobes.tech AI

Risposta dell'AI

Sì, in Kotlin le funzioni di estensione sono implementate come metodi statici a livello di bytecode JVM. Sebbene sintatticamente sembrino metodi aggiunti alle classi esistenti, in realtà non modificano la classe e non hanno accesso ai membri privati.

Ciò significa che all'interno dell'implementazione di una funzione di estensione non c'è un riferimento all'istanza della classe (this) nel senso dei metodi normali. Al suo posto, il primo parametro della funzione di estensione è l'oggetto a cui si applica.

Esempio:

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

Nel bytecode, apparirà come un metodo statico che accetta un oggetto String come parametro.

Pertanto, le funzioni di estensione in Kotlin sono sempre statiche nella loro implementazione, anche se sembrano metodi di istanza.