Sobes.tech
Junior — Middle

Alkalmazható-e a refied kulcsszó inline használata nélkül a kódban?

sobes.tech MI

Válasz az MI-től

Kotlinban a reified kulcsszó arra szolgál, hogy futásidőben információt szerezzen a típusról generikus függvényekben, de ez megköveteli, hogy a függvény inline módosítóval legyen deklarálva.

Ez azért van, mert a Kotlinban a generikus típusokat általában a fordítás során (type erasure) törlik, és inline nélkül nem lehet konkrét típust szerezni futásidőben.

Ezért a reified nem használható inline nélkül — a fordító hibát fog jelezni.

Helyes használat példája:

inline fun <reified T> isInstance(value: Any): Boolean {
    return value is T
}

Ha eltávolítjuk az inline-t, a reified nem használható.