Почему Котлин держит MetaData в файле класса Kotlin?

Мы преобразовали файл Java в файл Kotlin, а затем скомпилировали в файл класса. Получаемый класс больше, чем исходный файл класса Java. В файле класса Kotlin мы обнаружили метаданные в каждом классе. Почему Котлин хранит эти метаданные?

Некоторые аспекты кода в Kotlin не могут быть выражены в чистом байт-коде Java (например, обнуление, первичные конструкторы, internal видимость, модификатор lateinit , делегирование свойств и т. Д.). Вместо этого они сериализуются и сохраняются как метаданные в классах.

Когда вы используете JAR-дистрибуцию библиотеки Kotlin, компилятор анализирует метаданные, чтобы обнаружить эти специфические атрибуты Kotlin, чтобы использовать библиотеку как артефакт Kotlin со всеми доступными функциями.

Во время выполнения метаданные используются kotlin-reflect , API отражения Kotlin, чтобы восстановить эти атрибуты и обеспечить доступ к ним посредством отражения.

Intereting Posts
Cloud Firestore – QuerySnapshot.toObjects выбрасывает ненулевой указатель класс данных kotlin HttpMessageNotReadableException @StringRes, @DrawableRes, @LayoutRes и т. Д. Андроидные аннотации lint check с параметрами kotlin IntelliJ не распознает файл kotlin после его удаления и воссоздает с тем же именем создать 2 одинаковых класса разных подтипов Фрагмент как внутренний класс Производительность при использовании Pair в Kotlin для Android Доступ к внешней ценности внутри Kotlin + Dagger2: не может быть предоставлен без конструктора @Inject или из метода @ Provides- или @ Produces-annotated Как найти имя переменной из string-массива в strings.xml Как вызвать LivePagedListProvider с аргументом в базе данных комнаты Как функции хранения в статической коллекции будут влиять на систему? Тип вывода с функциональными строителями Kotlin с картой в Android Как правильно реализовать lateinit с пользовательскими объектами класса для использования в onCreate () в android, избегая ошибки Property getter или setter expected