#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-код на основе аннотаций по любым критериям.