Sobes.tech
Junior — Middle

Ist die Erweiterungsfunktion in Kotlin innerhalb der Implementierung immer statisch?

sobes.tech KI

Antwort von AI

Ja, in Kotlin werden Erweiterungsfunktionen als statische Methoden auf Bytecode-Ebene der JVM implementiert. Obwohl sie syntaktisch wie Methoden aussehen, die zu bestehenden Klassen hinzugefügt wurden, verändern sie die Klasse nicht und haben keinen Zugriff auf private Mitglieder.

Das bedeutet, dass innerhalb der Implementierung einer Erweiterungsfunktion keine Referenz auf die Instanz der Klasse (this) im Sinne normaler Methoden vorhanden ist. Stattdessen ist der erste Parameter der Erweiterungsfunktion das Objekt, auf das sie angewendet wird.

Beispiel:

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

Im Bytecode erscheint dies als eine statische Methode, die ein String-Objekt als Parameter akzeptiert.

Daher sind Erweiterungsfunktionen in Kotlin immer statisch in ihrer Implementierung, auch wenn sie wie Instanzmethoden aussehen.