Анастасия Бирилло — Compile-time рефлексия в Kotlin

На этом докладе мы не будем рассматривать все возможности, которые предоставляет рефлексия Kotlin в общем случае. Мы разберём довольно конкретную задачу «Как найти все классы, помеченные аннотацией и\или имеющие определённый супертип?» (и аналогичную для функций). Такую задачу можно решить несколькими способами, но все они имеют существенные недостатки. Например, стандартная Java рефлексия сильно увеличит время старта приложения. Такие библиотеки, как Classgraph ускорят процесс, но все еще заставят нас постоянно осуществлять поиск по classpath (хоть и оптимизированный). Annotation processing позволит проиндексировать классы во время компиляции, но при этом придется использовать специальные аннотации и усложнять проект. Во время доклада мы разберем новый подход — плагин для компилятора Kotlin, который позволяет перенести решение этой задачи в compile-time без существенных ограничений и решать ее в run-time за O(1). Кроме того, с помощью него можно решить данную задачу в общем виде и искать сущност
Back to Top