"необязательный повтор" с google protobuf для Java
Я использую Google Protobuf, используя java.
Я написал выражение вроде
optional repeated string users = 9;
Когда я пытался скомпилировать, я получаю сообщение об ошибке, например
message.proto:39:57: Missing field number.
Все, что я хотел, это создать массив строк.
Может кто-нибудь помочь мне решить его.
PS: Если я избегал необязательного ключевого слова, тогда он компилируется, но в java я получаю ошибку класса, не найденную для com.google.protobuf.ProtocolStringList
Заранее спасибо
Ответы
Ответ 1
Все, что вам нужно, это:
repeated string users = 9;
Вам не нужен модификатор optional
, и похоже, что он запутывает парсер. Поле repeated
по существу optional
: вы просто не добавляете никаких значений.
Что касается com.google.protobuf.ProtocolStringList
: проверьте, что используемая вами версия .proto-компилятора (protoc) является точной совпадением для используемой вами версии библиотеки.
Ответ 2
Сгенерированный файл содержит метод для извлечения count. например int getXXXCount();
Одна из проблем заключается в том, что такой метод не будет доступен для сгенерированного файла, соответствующего предыдущим версиям protoc def.