2016-09-17 1 views
0

Я использую Google Protobuf с Java. У меня возникла проблема с отправкой пустой повторяющейся строки.Google Протобуф Пустой список, показывающий размер 1

message OurPokemonMessage { 
     .... 
     repeated string learnableMoves = 10; 
} 

Теперь, когда я использую метод Protobuf добавить коллекцию (которая пуста), как это:

message.addAllLearnableMoves(someEmptyListOfString); 

Теперь, когда я создаю новый список строк, используя это сообщение я получаю один элемент в список, который является пустым списком.

Это, как создать список строки с помощью сообщения:

new ArrayList<>(message.getLearnableMovesList()) 

Этот список массив содержит пустой строковый элемент. Поэтому я отладил сообщение и оценил 2 условия и нашел странные результаты.

message.getLearnableMovesList()//clearly shows empty list 

    (com.google.protobuf.UnmodifiableLazyStringList) [] //Empty 

message.getLearnableMovesList().size()//shows the size of list is 1 
    (int) 1 //Size is 1 

Есть ли у кого-либо подобные проблемы? Есть ли способ разрешить это?

+0

Вместо того, чтобы показывать нам фрагменты, вы могли бы предоставить [mcve ]? Это облегчит нам воспроизведение проблемы. –

+0

Я попытался воспроизвести проблему с меньшим примером, но в этом случае это не так. Поскольку я использую сложную структуру Protobuf и отправляю сообщения по сети, я не совсем уверен, как обеспечить правильный пример:/ – Sneh

+0

Если вы пытаетесь воспроизвести его на небольшом примере, скорее всего, это проблема в другом месте, нам будет очень сложно помочь. Попробуйте скопировать весь проект и постепенно удалять биты до тех пор, пока вы не найдете проблему или не представите небольшой пример. –

ответ

0

Итак, я понял, что с протобуфом не было проблем. Проблема заключалась в том, что в моем классе learnableMove я добавлял пустую строку, которая при печати с использованием функции toString() показывала [], тогда как размер списка был равен 1.

 Смежные вопросы

  • Нет связанных вопросов^_^