Junior — Middle
Funcția de extensie în Kotlin este întotdeauna statică în interiorul implementării?
sobes.tech AI
Răspuns de la AI
Da, în Kotlin, funcțiile de extensie sunt implementate ca metode statice la nivelul bytecode-ului JVM. Deși sintactic par a fi metode adăugate claselor existente, ele nu modifică clasa și nu au acces la membrii privați.
Aceasta înseamnă că în interiorul implementării unei funcții de extensie nu există o referință la instanța clasei (this) în sensul metodelor normale. În schimb, primul parametru al funcției de extensie este obiectul la care se aplică.
Exemplu:
fun String.lastChar(): Char = this.get(this.length - 1)
În bytecode, aceasta va apărea ca o metodă statică care acceptă un obiect String ca parametru.
Prin urmare, funcțiile de extensie în Kotlin sunt întotdeauna statice în implementarea lor, chiar dacă arată ca metode de instanță.