Sobes.tech
Junior — Middle

Aké obmedzenia majú rozširujúce funkcie v jazyku Kotlin?

sobes.tech AI

Odpoveď od AI

V Kotlinu majú rozširujúce funkcie nasledujúce obmedzenia:

  • Nemôžu pridávať nové vlastnosti alebo stav k triedam. Rozšírenia fungujú iba s funkciami.
  • Rozšírenia nemenia skutočnú triedu, sú staticky rozpoznané. To znamená, že volanie rozšírenia je určené typom premennej počas kompilácie, nie skutočným typom objektu počas behu.
  • Nemožno prepísať existujúce metódy triedy pomocou rozšírení. Ak už existuje metóda s rovnakým názvom, bude volaná metóda triedy.
  • Rozšírenia nemôžu byť deklarované v rámci lokálnych funkcií. Musia byť deklarované na úrovni súboru, triedy alebo objektu.

Príklad statického rozpoznania rozšírení:

open class Base
class Derived : Base()

fun Base.foo() = "Base"
fun Derived.foo() = "Derived"

fun printFoo(b: Base) {
    println(b.foo())
}

printFoo(Derived()) // Vytlačí "Base", pretože rozšírenie je vybrané podľa typu Base

Je dôležité si to uvedomiť pri používaní rozširujúcich funkcií v Kotlin.