Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpRfInr 142 of 299 menu
◀ ▶

Введение в рефлексию в Kotlin

Рефлексия - способ спросить у уже описанного типа, как он называется и из чего состоит, когда обычный вызов метода ещё не нужен. На JVM это опирается на метаданные собранного class-файла; в Kotlin те же данные доступны через пакет kotlin.reflect.

У каждого класса есть литерал вида ИмяТипа::class. Выражение не создаёт объект - оно возвращает описание типа, с которым дальше работают как с обычным значением:

class Parcel(val id: Int) fun main() { val kind = Parcel::class println(kind) }

Печать такого значения даёт служебную строку с полным именем на JVM. Для человека удобнее свойство simpleName - короткое имя без пакета:

class Parcel(val id: Int) fun main() { val kind = Parcel::class println(kind.simpleName) }

Тот же приём работает и для встроенных типов: достаточно написать String::class или Int::class в любом месте программы. Так проверяют, с каким классом столкнулся код, не завязываясь на конкретный экземпляр.

Одной ссылки на класс хватает, чтобы понять идею темы: программа читает описание типа изнутри, ещё до работы с конкретным экземпляром в памяти.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить