Компания JetBrains представила экспериментальные возможности в Kotlin 2.5.0-Beta1: блоки-компаньоны и расширения-компаньоны. Эти инструменты позволяют определять константы, вспомогательные функции и фабричные методы, относящиеся к самому классу, а не к его экземплярам, что приближает язык к работе со статическими членами.
Блоки-компаньоны компилируются в статические члены на JVM, что упрощает разработку в рамках Kotlin Multiplatform. Расширения-компаньоны позволяют добавлять новые члены к любому типу, даже если у разработчика нет доступа к исходному коду класса или если в нем отсутствует объект-компаньон.
Для активации функций требуются флаги компилятора -Xcompanion-blocks или -Xcompanion-blocks-and-extensions. Использование второго флага помечает бинарные файлы как предварительные, что ограничивает их использование в качестве зависимостей до стабилизации функции. Блоки-компаньоны не накладывают таких ограничений.
Традиционные объекты-компаньоны остаются в языке и продолжат поддерживаться. Они необходимы в случаях, когда компаньон должен реализовывать интерфейс, так как компилируются в полноценный класс. Переход на блоки-компаньоны требует перекомпиляции проекта и всех зависимых от него модулей.






