Почему новые функции Android (Proto DataStore) все еще генерируют Java-код, а не Kotlin?

#android #kotlin #protocol-buffers

#Android #kotlin #буферы протокола

Вопрос:

Я занимаюсь расследованием

 implementation  "androidx.datastore:datastore-core:1.0.0-alpha01"
implementation  "com.google.protobuf:protobuf-javalite:3.10.0"
  

через эту кодовую лабораторию

Я не понимаю, почему связанные классы, сгенерированные хранилищем данных, являются Java

Я думал, Google объявил, что Kotlin заменил Java в качестве основного языка разработки Android?

У меня сложилось впечатление, что у Kotlin было много преимуществ перед Java

проблема в том, что буферы proto не поддерживают Kotlin?

Ответ №1:

Я могу ответить на это быстро!

Согласно ссылке codelab, которой вы поделились, если вы посещаете страницу 6, первая строка указывает на то, на что опирается ваш ответ:

Буферы протокола — это механизм сериализации структурированных данных. Вы определяете, как вы хотите, чтобы ваши данные были структурированы один раз, а затем компилятор генерирует исходный код для удобной записи и чтения структурированных данных.

Итак, в основном, библиотека использует плагин code generator, который генерирует классы, необходимые protobuf для работы с проектом. (Да, вы можете связать то же самое с привязкой данных, когда вы пишете код на xml, а под капотом есть сгенерированный класс, который фактически реализует эту логику для вас)

И это причина, по которой «сгенерированные классы находятся на Java». В этом контексте это не имеет ничего общего с исходным кодом (поддержка Java / Kotlin для библиотеки). Все, что написано на Java, будет без проблем работать на Kotlin и наоборот (учитывая контекст разработки Android)

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