"необязательный повтор" с 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.