[Computer Science Center] Все, что вы хотели знать о рефлексии в Kotlin

🎯 Загружено автоматически через бота: 🚫 Оригинал видео: 📺 Данное видео принадлежит каналу «Computer Science Center» (@CompscicenterRu). Оно представлено в нашем сообществе исключительно в информационных, научных, образовательных или культурных целях. Наше сообщество не утверждает никаких прав на данное видео. Пожалуйста, поддержите автора, посетив его оригинальный канал. ✉️ Если у вас есть претензии к авторским правам на данное видео, пожалуйста, свяжитесь с нами по почте support@, и мы немедленно удалим его. 📃 Оригинальное описание: «Все, что вы хотели знать о рефлексии в Kotlin: что это, как часто ее используют, почему она так долго работает и как ее сделать быстрее» — открытая лекция Анастасии Бирилло. Зарегистрироваться, чтобы поучаствовать очно или в Zoom, можно здесь: Анастасия — программист-исследователь JetBrains Research в лаборатории ML4SE (Machine Learning Methods in Software Engineering), выпускница и преподавательница CS центра. На этой лекции мы не будем рассматривать все возможности, которые предоставляет рефлексия в общем случае. Мы разберём довольно конкретную задачу «Как найти все классы, помеченные аннотацией и/или имеющие определенный супертип?» (и аналогичную для функций). Как бы вы решали такую задачу? Ведь если мы будем использовать стандартную рефлексию, то время старта приложения будет слишком долгим. Если захотим использовать Annotation processing, то ускорим процесс, но столкнёмся с некоторыми неудобствами и ограничениями в работе. Если вариантов больше не осталось, то приходите на лекцию послушать про новый подход — плагин для компилятора Kotlin, который позволяет перенести решение этой задачи в compile-time без существенных ограничений и решать ее в run-time за O(1). Кроме того, с помощью него можно решить данную задачу в общем виде и искать сущности по любому (почти) условию. За время лекции мы познакомимся с понятием рефлексии в контексте данной задачи, рассмотрим как часто её решают на примере анализа 10K самых популярных Kotlin репозиториев и обсудим плюсы и минусы существующих решений. После чего разберёмся, что же такое плагины для Kotlin компилятора, почему именно они могут помочь решить данную задачу эффективно и разберём, как устроен плагин Reflekt, решающий данную задачу. Вместе мы погрузимся во внутренности работы компилятора, разберём все тонкости реализации плагина и не самые очевидные проблемы, возникающие при разработке плагинов, о которых нигде не пишут :)
Back to Top